2016-03-29 22 views
2

Ich habe ein Python 2.7.3-Programm auf meinem Raspberry Pi erstellt, die eine XML-Datei schreibt. Wenn ich dieses Programm unter Verwendung des Schlüssels F5 von IDLE ausführe, wird die XML-Datei ausgeführt und ausgegeben. Wenn ich dasselbe Programm unter Verwendung eines LXDE-Terminals unter der [email protected] ~ $-Eingabeaufforderung durch Eingabe von python program_name.py ausführe, funktioniert es auch wie vorgesehen und gibt die XML-Datei aus.Ausführen eines Python-Programms von Crontab

Jetzt möchte ich die XML-Datei alle 15 Minuten aktualisieren, und es klingt wie ich sollte dies mit Crontab tun können.

Also begann ich mit dem Befehl crontab -e, die den Editor öffnet (nano, in meinem Fall). Ich trat als letzte Zeile wie folgt vor:

*/15**** python /home/pi/program_name.py 

ich verschiedene Varianten auch versucht, wie folgt:

*/15**** sudo python /home/pi/program_name.py 

und:

*/15**** python program_name.py 

Wenn ich das Programm beenden erhalte ich die Fehlermeldung :

"/tmp/crontab.nyQZsu/crontab":23: bad command 
errors in crontab file, can't install. 

Irgendwelche Ideen, was ich falsch mache?

Antwort

-1

Try 15 statt/15

auch zu verwenden, wenn Sie einen crontab-Eintrag wollen als root ausführen, ist es besser, sie als eigene benutzer- die in root in einer /etc/cron.d/ Datei ablegen Ebene crontab.

+1

Was ist der Vorteil der crontab Eintrag von mit einer Wurzel laufen? – Gary

+0

Eine einzige "15" in der Minutenspalte würde das Skript um 15 Minuten nach jeder Stunde ausführen, nicht alle 15 Minuten. –

3

Die Stunden-, Minuten-, Monats- und andere Felder in einer crontab-Datei sind durch Leerzeichen getrennt. Es sei denn, Sie haben eine cron Variante, die ich vorher noch nicht gesehen habe, wenn Sie alle Ihre Felder zu einem einzigen Blob zusammenfassen, wie "****" ist ein Syntaxfehler.

aus dem Handbuch des POSIX-Programmierers:

[...] ein crontab-Eintrag ist eine Textdatei, die jeweils von Zeilen von sechs Feldern besteht. Die Felder müssen durch <blank> s getrennt sein.

Das ist, was die „schlechten Befehl Fehler in crontab“ Nachricht, die Sie sagt: Die Datei, die Sie gefüttert crontab ist ungültig, so dass das Programm weigert sich zu „installieren“ (nehmen) es.

Zum Vergleich, hier ist der Fehler, den ich bekam, wenn eine Datei zu installieren versuchen, die eine absichtlich falsche Linie enthalten, ***** /bin/echo:

$ crontab -e 
crontab: installing new crontab 
"/tmp/crontab.XXXXe2lUUa":5: bad hour 
errors in crontab file, can't install. 
Do you want to retry the same edit? n 
crontab: edits left in /tmp/crontab.XXXXe2lUUa 
$ 
+0

Danke. Das funktioniert. Von jedem der Beispiele, die ich gesehen habe, habe ich nicht die Tatsache aufgegriffen, dass jedes der 6 Felder durch eine Leerstelle getrennt war. (habe gerade gemerkt, dass ich in diesen Kommentaren nicht "Danke" sagen soll !!) – Gary