Python Problem in cron Ausführung popen
Frage
Ich verwende popen
Befehle in einem Python-Skript ausführen, und ich nenne es über cron.
Cron nennt das Skript, aber das Verhalten ist nicht das gleiche, wenn ich es von Hand nennen.
Quelle:
from subprocess import Popen, PIPE
pp = Popen('/usr/bin/which iptables', shell=True, stdout=PIPE)
data = ''
for ln in pp.stdout:
data = data+ln
if data == '':
print 'ko'
else:
print 'ok : '+data
Mit der Hand:
# python /home/user/test.py
> : /sbin/iptables
Mit dem cron (in / tmp / err_cron):
* * * * * /usr/bin/python /home/user/test.py >> /tmp/err_cron
ko
ko
ko
Warum cron dieses Skript normalerweise nicht ausgeführt?
Lösung
Normalerweise, wenn Prozesse von cron ausgeführt werden, die PATH
auf einen sehr restriktiven Wert (der Mann-Seite für meine crontab sagt /usr/bin:/bin
). Sie können hinzufügen müssen:
PATH=/usr/bin:/bin:/sbin
Zum Anfang der crontab-Datei.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow