Problema de Python al ejecutar popen en cron
Pregunta
Utilizo popen
para ejecutar comandos en un script de Python, y lo llamo a través de cron.
Cron llama a este script pero el comportamiento no es el mismo si lo llamo a mano.
Fuente:
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
A mano:
# python /home/user/test.py
> : /sbin/iptables
Por cron (en / tmp / err_cron):
* * * * * /usr/bin/python /home/user/test.py >> /tmp/err_cron
ko
ko
ko
¿Por qué cron no ejecuta este script normalmente?
Solución
Normalmente, cuando los procesos se ejecutan desde cron, el PATH
se establece en un valor muy restrictivo (la página de manual de mi crontab dice / usr / bin: / bin
) . Es posible que deba agregar:
PATH=/usr/bin:/bin:/sbin
a la parte superior de su archivo crontab.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow