Python-Subprocess gibt nicht-null exit status nur in cron
Ich habe ein Python-Skript verwaltet eine Reihe von CasperJS Aufgaben und Prozesse das Ergebnis. Es läuft auch gut von der Befehlszeile aus, aber wenn ich das script in cron, bekomme ich die Fehlermeldung:
CalledProcessError: Command '['/path/to/casperjs', '/path/to/doSomething.js', 'args']' returned non-zero exit status 1
In Python, ich nenne CasperJS:
response = subprocess.check_output(['/path/to/casperjs', '/path/to/doSomething.js', 'args'], shell=True)
Habe ich versucht shell=False
und Popen
als gut, aber ich bekomme das gleiche Ergebnis. Ich habe auch versucht, den gesamten Befehl eine Zeichenkette (anstatt von Listen), aber das hat auch nicht geholfen.
Läuft '/path/to/casperjs /path/to/doSomething.js args'
gibt exit-code 0 bei der Ausführung in der shell.
Außerdem habe ich PATH=/usr/bin:/bin:/sbin:/usr/local/bin
zu meiner crontab ohne Erfolg. (Wie vorgeschlagen in diese Frage.)
Irgendwelche Ideen, warum bin ich nur immer diese Fehler im cron? Danke!!
EDIT: In übereinstimmung mit der Antwort unten, Einstellung shell=False
und stderr=subprocess.STDOUT
gemacht alles funktioniert...
InformationsquelleAutor arboc7 | 2012-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie versuchen zu erfassen stderr neben stdout, so dass Sie können genau herausfinden, warum das Programm nicht (vorausgesetzt, es ist in der Tat drucken einige Fehler für Sie)
Ja, ich war die überprüfung aller Umgebungsvariablen, aber die Einstellung
shell=False
und hinzufügenstderr=subprocess.STDOUT
und jetzt alles magisch arbeitet?!!Ya, ich Stimme zu. Seine entweder das, oder vielleicht der Prozess hat Probleme beim laufen, unter welchem user den crontab eingerichtet ist. Ich wollte nicht spekulieren zu viel, sondern eher versuchen, herauszufinden, was der wirkliche Fehler sein könnte
Manchmal ist es am besten nicht zu Fragen, warum, wenn seine arbeiten. Froh, ich könnte indirekt helfen.
die Erfassung stderr stört mich nicht-die Tatsache, dass die Erfassung das Problem behebt, ist das, was mich stört. Scheint nicht, wie etwas, das sollte lösen eines "non-zero exit status" - Problem. Aber ich werde versuchen, nicht look a gift-horse in den Mund heute und nur roll mit ihm.
InformationsquelleAutor jdi