He intentado eliminar muchos de los errores comunes,
asegurando que las RUTA estén disponibles para cron
hay una línea final al final del archivo crontab
La zona horaria está configurada por:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Corriendo date
en bash, obtengo:
Tue Sep 17 15:14:30 SGT 2013
Para verificar si cron está usando el mismo tiempo,
* * * * * date >> date.txt
está dando la misma salida de fecha en date.txt.
Este es el script que estoy tratando de ejecutar:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Usando crontab -e
, la línea de abajo funciona,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Sin embargo, cuando probé algunos otros argumentos, esperando que se ejecute a las 2.50 p.m.
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
o
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
Ya no funcionará. Parece que hay un problema con mi argumento de hora. Tampoco se pudo encontrar nada en el /tmp/debug.log
archivo.
SOLUCIÓN:
Resultó que tengo que reiniciar el servicio cron después de hacer cambios en TZ.
~/event.sh
intentar/home/username/event.sh
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
y confirme quedate
muestra el tiempo esperado. Tenga en cuenta que la variable de entorno TZ desde dentro del crontab no podría afectar a la zona horaria que utiliza el daemon cron en sí, sino que se afectan a los procesos en marcha a través de cron, por lo que si se establece TZ en su crontab me gustaría sugerir al comentar a cabo temporalmente y establecer la hora usando la zona horaria del reloj del sistema (probablemente UTC si está arrancando Linux de manera única, pero puede ser la hora local).Respuestas:
En primer lugar, las probabilidades de que esté golpeando un error que hace que un campo se considere incorrectamente parece excepcionalmente bajo. Es más probable que sea un malentendido de lo que está sucediendo y de lo que cron espera.
En este caso, descubrimos en los comentarios a la pregunta que probablemente era un problema relacionado con la zona horaria. Para esto, deberías:
* * * * * date
al crontabEsto obliga
date
a ejecutarse con la configuración de zona horaria del invocador, lo que significa el demonio cron . Mira la salida; mostrará qué zona horaria está usando internamente el cron y, por lo tanto, es muy probable que en qué zona horaria desee sus campos de tiempo. Si tiene una asignación TZ en el crontab, es posible que la asignación de la variable de entorno TZ pase a invoca comandos pero el cron mismo usa alguna otra zona horaria . Al comentar o eliminar la asignación de TZ, evita esta ambigüedad.También tenga en cuenta que cualquier cambio en la configuración de la zona horaria global del sistema (incluyendo, por ejemplo, / etc / localtime) casi seguramente requiere al menos un reinicio del cron daemon, y posiblemente (aunque poco probable) un reinicio del sistema para que surta efecto. La edición de la asignación de TZ en el crontab no debería requerir una recarga del cron daemon, ya que debería detectar que el archivo ha sido cambiado y volver a cargarlo automáticamente.
fuente