Проблема с Python при выполнении popen в cron
Вопрос
Я использую 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
По cron (в / tmp / err_cron):
* * * * * /usr/bin/python /home/user/test.py >> /tmp/err_cron
ko
ko
ko
Почему cron не запускает этот скрипт нормально?
Решение
Обычно, когда процессы запускаются из cron, для PATH
устанавливается очень ограничительное значение (на странице руководства для моего crontab указано / usr / bin: / bin
) , Вам может понадобиться добавить:
PATH=/usr/bin:/bin:/sbin
в начало файла crontab.
Не связан с StackOverflow