Ich versuche, ein einfaches Python-Skript mit crontab auszuführen, aber ich kann es nicht zum Laufen bringen. Ich kann ein einfaches Programm in crontab ausführen, wenn ich Python nicht benutze. Hier ist die Zeile in meiner Crontab-Datei, die funktioniert:

* * * * * echo “cron test” >> /home/ftpuser/dev/mod_high_lows/hello.txt

Ich kann dieses Python-Skript testit.py auch direkt über die Befehlszeile ausführen. Dies ist meine testit.py-Datei, die eine CSV-Datei ausgibt.

#!/usr/bin/env python

import f_file_handling
_data = [(12,15,17)]
f_file_handling.csv_out('my_file_test',_data)

Die obige Datei hat eine Funktion, die ich erstellt habe, aber ich weiß, dass sie funktioniert, da sie das tut, was ich erwarte, wenn ich die Datei testit.py über die Befehlszeile wie folgt ausführe:

python testit.py

Also habe ich Crontab dazu gebracht, alleine zu arbeiten und die Datei testit.py alleine zu arbeiten, dann habe ich versucht, die Datei testit.py mit Crontab auszuführen. Ich habe die Datei testit.py mit dem folgenden Befehl ausführbar gemacht:

chmod +x testit.py 

Und ich sehe die ausführbare Datei, weil die Datei in meinem Linux-Befehlsfenster grün angezeigt wird, wenn ich mich im richtigen Verzeichnis befinde. Jetzt habe ich in derselben Crontab-Datei, in der ich den früheren Crontab-Test ausgeführt habe, die folgende Zeile hinzugefügt:

* * * * * /home/ftpuser/dev/mod_high_lows/testit.py

Ja, ich versuche, dies jede Minute auszuführen, nur um den einfachsten Test auszuführen, der möglich ist, damit Crontab und Python zusammenarbeiten.

Folgendes verwende ich:

  • Ubuntu 14.04.2 LTS (GNU / Linux 3.13.0-52-generic x86_64)

  • Python 2.7

Die oben genannten sind auf einem Linux-Server, den ich eingerichtet habe.

Sie sehen die Shebang-Zeile oben in meiner testit.py-Datei. Nach meinen Recherchen sollte dies funktionieren.
Was meine Python-Datei testit.py angeht, habe ich sie auf einem Windows-Computer geschrieben und dann auf den Server übertragen, aber als crontab und python nicht zusammenarbeiteten, habe ich die Datei auch mit dem Nano-Texteditor aus dem Linux-Befehlsfenster codiert, aber Dies macht keinen Unterschied, wenn Sie versuchen, die Datei testit.py über Crontab auszuführen. Es wird also auch dann nicht ausgeführt, wenn ich den Code testit.py direkt auf den Linux-Server schreibe (nur für den Fall, dass Windows versteckte Zeichen in meiner Datei erstellt hat).

1
user1087809 16 Aug. 2015 im 04:44

2 Antworten

Eine Sache, die mich immer beschäftigt: Sie müssen am Ende der Crontab-Datei eine leere Zeile hinterlassen. Cron wird nicht die letzte Zeile der Crontab ausführen!

0
Tay Frost 16 Aug. 2015 im 08:40

Ich bin nicht sicher, ob dies helfen wird, aber ich habe es immer erfolgreich geschafft, Python-Skripte erfolgreich von cron auszuführen, indem ich diese Zeile am Ende der crontab-Datei hinzufügte:

@reboot python /home/ftpuser/dev/mod_high_lows/testit.py &

Das & ist am Ende der Zeile erforderlich. Wenn Sie dies benötigen und möchten, dass dieses Skript jede Minute ausgeführt wird, können Sie das gesamte Skript in eine Schleife einfügen und am Ende der Iteration jeder Schleife eine Minute Schlaf einlegen.

Möglicherweise müssen Sie auch ein sudo vor die Python stellen, obwohl Crontabs ohnehin als Root ausgeführt werden sollten, sodass dies wahrscheinlich nicht erforderlich ist. Diese Methode hat sich jedoch beim Ausführen von Skripten beim Booten für meinen Raspberry Pi bewährt.

0
zavtra 16 Aug. 2015 im 01:56