Проблема с Python при выполнении popen в cron - PullRequest
7 голосов
/ 21 октября 2009

Я использую popen для выполнения команд в скрипте Python и вызываю его через cron.
Крон вызывает этот сценарий, но поведение не то же самое, если я вызываю его вручную.

Источник:

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

От руки:

# python /home/user/test.py
> : /sbin/iptables

По хронам (в / tmp / err_cron):

* * * * * /usr/bin/python /home/user/test.py >> /tmp/err_cron
ko
ko
ko

Почему cron не запускает этот скрипт нормально?

1 Ответ

20 голосов
/ 21 октября 2009

Обычно, когда процессы запускаются из cron, для PATH устанавливается очень ограничительное значение (на странице руководства моего crontab написано /usr/bin:/bin). Вам может понадобиться добавить:

PATH=/usr/bin:/bin:/sbin

в начало вашего файла crontab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...