Este puede ser un tema un poco confuso porque hay diferentes implementaciones de cron. También hubo varios errores que rompieron esta característica, y también hay algunos casos de uso en los que simplemente no funcionará, específicamente si realiza un apagado / arranque frente a un reinicio.
Loco
punto de datos # 1
Aquí se cubre uno de estos errores en Debian, titulado: cron: los trabajos de @reboot no se ejecutan . Esto parece haber llegado también a Ubuntu, lo que no puedo confirmar directamente.
punto de datos # 2
La evidencia del error en Ubuntu parece confirmarse aquí en este SO Q&A titulado: @reboot cronjob no se está ejecutando .
extracto
comentario # 1: .... 3) su versión de crond puede no ser compatible con @reboot ¿está usando vix's crond? ... mostrar resultados de crontab -l -u usuario
comentario # 2: ... Podría ser una buena idea configurarlo como un script de inicio en lugar de confiar en una versión específica de cron's @reboot.
comentario # 3: ... @MarkRoberts eliminó el reinicio y modificó el 1 * * * *, a * / 1 * * * *, ¡el problema está resuelto! ¿Dónde envío a los representantes Mark? ¡Gracias!
La respuesta aceptada en ese Q&A también tenía este comentario:
Me parece que Lubuntu no admite la sintaxis de @Reboot Cron.
Evidencia adicional
punto de datos # 3
Como evidencia adicional había este hilo de que alguien estaba intentando lo mismo y se frustraba de que no funcionara. Se titula: Hilo: Cron: los trabajos de @reboot no funcionan .
extracto
Re: Cron - trabajos de reinicio no funcionan
Cita Originalmente publicado por ceallred View Post Esto me está matando ... Probé el script de envoltura. La ejecución manual genera el archivo de registro ... reiniciando y el trabajo no se ejecuta ni crea el archivo de registro.
Syslog muestra que CRON ejecutó el trabajo ... pero nuevamente, no hay salida y el proceso no se está ejecutando. 15 de julio 20:07:45 RavenWing cron [1026]: (CRON) INFORMACIÓN (Ejecutar @reboot jobs) 15 de julio 20:07:45 RavenWing CRON [1053]: (ceallred) CMD (/ home / ceallred / Scripts / run_spideroak. sh> /home/ceallred/Scripts/SpiderOak.log 2> & 1 &)
Parece que a cron no le gusta el comando @reboot ... ¿Alguna otra idea?
De acuerdo ... Parcialmente resuelto. Marcaré este como resuelto y comenzaré un nuevo hilo con el nuevo problema .....
Creo que la respuesta fue que mi directorio de inicio encriptado no estaba montado cuando CRON estaba tratando de ejecutar el script (almacenado en / home / username / scripts). Se movió a / usr / scripts y el trabajo se ejecuta como se esperaba.
Así que ahora parece ser un problema de spideroak. El proceso comienza, pero cuando termina el proceso de arranque, ya no está. Estoy adivinando un bloqueo por alguna razón ... Nuevo hilo para preguntar sobre eso.
¡Gracias por toda la ayuda!
Una vez que este usuario anterior descubrió su problema, pudo @reboot
trabajar con la entrada crontab de un usuario.
No estoy completamente seguro de qué versión de cron se usa en Ubuntu, pero esto parece indicar que el usuario también puede usar @reboot
, o que el error se corrigió en algún momento en versiones posteriores de cron.
punto de datos # 4
Probé en CentOS 6 lo siguiente y funcionó.
Ejemplo
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
Luego reinicié el sistema.
$ sudo reboot
Después del reinicio.
$ cat reboot.txt
hi
Llevar lejos
- Esta característica parece ser compatible con las entradas crontab del sistema y del usuario.
- Debe asegurarse de que sea compatible / funcione en su distribución particular y / o versión del paquete cron.
Para obtener más información sobre cómo funciona el mecanismo real, @reboot
me encontré con esta publicación de blog que analiza las entrañas. Se titula: @reboot: explica la magia cron simple .
Depuración de crond
Puede aumentar el nivel de detalle crond
agregando lo siguiente a este archivo de configuración en distribuciones basadas en RHEL / CentOS / Fedora.
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
Los niveles válidos son 0, 1 o 2. Para revertir este archivo a su nivel de registro predeterminado, simplemente elimine "-L 2"
cuando haya terminado de depurar la situación.