Asegúrese de que el demonio cron siga ejecutándose

Asegúrese de que el demonio cron siga ejecutándose

si en undebian 7servidor (wheezy) que se ejecuta en una máquina virtual alojada y un demonio actualizado, cronhay un error por lo que cron dejó de ejecutarse sin una razón obvia. Dado que esto sólo ocurrió una vez desde entonces, es difícil depurar.

¿Cómo puede asegurarse de que cron se reinicie automáticamente si vuelve a fallar y envía una alerta por correo electrónico?

Respuesta1

Siempre puedes consultar elmonitorizarproyecto.
Puede reiniciar los servicios y mantenerlos al día.
Si no hay forma de arreglar su cron como se sugiere en los comentarios.

Respuesta2

¿No podría ejecutar algo como daemontools para monitorear y reiniciar el proceso?

Sí, de hecho; y en algunas máquinas hago exactamente eso. "Algo así como daemontools" es en realidad el administrador de servicios deel paquete de comidapero otros miembros de la familia daemontools son más que capaces de supervisar cron GNU. (Vixie cron es otro asunto, pero dijiste Debian).

GNU cron es uno de los servicios más simples de ejecutar bajo la administración de servicios de la familia daemontools. La colección de scripts de ejecución de Gerrit Pape lo tiene, al igual que la colección de paquetes de servicios que acompaña al conjunto de herramientas nosh.

Dicho esto, no recuerdo haber necesitado nunca reiniciar GNU cronporque se estrelló.

Por otro lado, la gestión de servicios no se trata sólo de un reinicio automático. Estambiénsobre la tala y el control de recursos, los cuales son relevantes para la tarea dediagnosticando por quéEl cron de GNU se está bloqueando.

Diagnosticar el problema implicaría cosas como:

  • Edición del runprograma que se utilizará softlimitpara habilitar los volcados de memoria.
  • Editando el restartguión (o equivalente)…
    • … para comprobar si el demonio salió o terminó con una señal.
    • … para recopilar volcados de memoria.
    • … para generar alertas y enviar notificaciones por correo. (Una vez configuré un restartscript para enviarme por correo las últimas líneas en log/main/currentcaso de falla o cancelación).
    • … para ajustar la limitación de la velocidad de reinicio.
  • Leer el registro individual del cron de GNU y el propio registro del administrador de servicios para determinar cuándo y con qué frecuencia se ha reiniciado el demonio y qué mensajes de error (si los hay) ha generado.

Otras lecturas

Respuesta3

Como no se puede monitorear cronda través de crondmí, lo haría de esta manera:
echo "while true; do if ! (ps aux |grep crond |grep -v grep); then /etc/init.d/crond start; fi && sleep 5; done &" >> /etc/rc.local

Respuesta4

No es necesario instalar daemontools, runit, supervise, etc. Por muy útiles que sean estas herramientas, cubren casos de uso que generalmente no necesita solo para cron. Lo que simplemente necesita se puede manejar cómodamente con init. Agregar a /etc/inittab:

cron:2345:respawn:/usr/sbin/crond -n

Primero asegúrese crondde que admita la -nopción. Esto le indica que no se bifurque y que permanezca en primer plano. **Asegúrese de desactivar crond desde los scripts rc**.

/usr/lib/lsb/remove_initd /etc/init.d/crond

Si, por alguna razón, crond genera salidas a stdout o stderr, necesitará escribir un script contenedor para manejar esa salida y generar el script contenedor. Mantenga ese guión simple:

#!/bin/sh
#crond-wrapper.sh 
exec crond -n &>>/var/log/crond

Alternativamente, puede modificar el init.d/crondscript empaquetado existente con uno que invoque crond -ndentro de un bucle while. Pero en ese caso, debe ser inteligente al guardarlo pidpara usarlo más adelante con este script.

información relacionada