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?

War es hilfreich?

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
scroll top