problema Python execução popen no cron
Pergunta
Eu uso popen
para executar comandos em um script Python, e eu chamá-lo via cron.
Cron chama esse script, mas o comportamento não é o mesmo, se eu chamá-lo com a mão.
Fonte:
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
Ao lado:
# python /home/user/test.py
> : /sbin/iptables
Por cron (em / tmp / err_cron):
* * * * * /usr/bin/python /home/user/test.py >> /tmp/err_cron
ko
ko
ko
Por cron não executar este script normalmente?
Solução
Normalmente, quando os processos são executados a partir de cron, o PATH
está definido para um valor muito restritiva (a página do manual para o meu crontab diz /usr/bin:/bin
). Você pode precisar adicionar:
PATH=/usr/bin:/bin:/sbin
para o topo do seu arquivo crontab.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow