Tengo una tarea diaria de crontab:
50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1
Este script de shell daily_task ejecutará algunos scripts de python y producirá un archivo de datos.
Y falla por dos noches. Pero cuando llegué por la mañana, ejecuté los scripts de Python manualmente, obtuve el archivo de datos. O establezco un nuevo crontab que solo establece la fecha 0 10 * * *
, y este crontab también tiene éxito.
Así que ayer, puse > /tmp/zen_log 2>&1
en la tarea cron para obtener un mensaje de error.
Y esta mañana, recibí este mensaje de error en zen_log:
/my_path/daily_task.sh: line 19: 12364 Killed /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Parece que algún proceso ha sido asesinado? Pero, ¿qué significa esto exactamente line 19: 12364 Killed
?
PD:
Hoy, hace un minuto, cuando ejecuté manualmente el script de Python, obtuve:
/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Killed
line 19
en el guión? Tal vez publicar su guión nos ayudará a proporcionarle una respuesta.line 19
es/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
daily_task.sh
? Es difícil entender por qué falla1:50 am
pero tiene éxito10 am
con la información hasta ahora./var/log/messages
Me pregunto si su script está creando un error de falta de memoria (OOM) y está siendo asesinado. ¿Su sistema tiende a ejecutar otros scripts / aplicaciones / trabajos hambrientos de recursos del sistema durante las horas nocturnas en comparación con las horas de la mañana?Respuestas:
Muchas veces, cuando se están ejecutando aplicaciones
killed
, siempre es una buena idea echar un vistazo rápido a su/var/log/messages
archivo para ver si el núcleo está matando el proceso. El desencadenante más común (en mi experiencia) siempre se ha debido a errores de falta de memoria (OOM), ya que mi empresa utiliza principalmente aplicaciones java, es bastante común que los desarrolladores publiquen una actualización de código incorrecto que desencadena un evento OOM .Programar tareas cuando su sistema operativo tiene la mayoría de los recursos disponibles es probablemente la razón por la que está teniendo éxito en los intervalos de tiempo de AM y no en el PM, cuando a la mayoría de las personas les gusta programar trabajos del sistema de impuestos. Las soluciones simples a esto son aumentar los recursos de su sistema, restringir los recursos asignados a su código o moverse cuando sus trabajos están programados para que no entren en conflicto.
fuente
messages
syslog en lugar de/var/log/messages