Usando anacron en cronie en Gentoo - ¿No se ejecuta?

1

Este es el sistema crontab en un sistema Gentoo con cronie instalado, con el anacron uso de la bandera habilitada:

59  *  * * *    root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.hourly
9  3  * * *     root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.daily
19 4  * * 6     root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.weekly
29 5  1 * *     root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.monthly
*/10  *  * * *  root    [ ! -x /etc/cron.hourly/0anacron ] && { test -x /usr/sbin/run-crons && /usr/sbin/run-crons ; }

Se asegura de que /etc/cron.hourly/0anacron no está presente antes de ejecutar nada, porque anacron hará los scripts cron. *. Cual es:

 # ls -la /etc/cron.hourly/0anacron 
 -rwxr-x--- 1 root root 448 May 11 23:46 /etc/cron.hourly/0anacron

Ok, entonces, ¿cómo funciona anacron? Su script auxiliar está en cron.hourly, pero nada en cron.hourly se ejecuta si el script auxiliar está presente.

No puedo encontrar ninguna evidencia que alguna vez haya corrido. Es una gallina y un huevo.

Paul
fuente
Volví a vixie-cron después de unos días sin éxito en encontrar una respuesta a esto.
Gordon

Respuestas:

3

Por lo que yo entiendo, el anacron de cronie es activado por cron ejecutando /etc/cron.hourly/0anacron. Pero esto nunca sucede debido a las líneas 1 y 5 de crontab (se ejecutan solo en caso de que 0anacron no sea ejecutable).

Arreglé esto cambiando /etc/crontab a seguir

59  *  * * *      root  run-parts /etc/cron.hourly
#59  *  * * *     root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.hourly
#9  3  * * *      root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.daily
#19 4  * * 6      root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.weekly
#29 5  1 * *      root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.monthly
#*/10  *  * * * root    [ ! -x /etc/cron.hourly/0anacron ] && { test -x /usr/sbin/run-crons && /usr/sbin/run-crons ; }

La línea 1 se asegura de que los scripts en /etc/cron.hourly son ejecutados por cron regular cada hora (sin verificación de archivos lastrun).

Comenté la eliminación de archivos lastrun para salidas diarias, semanales y mensuales, ya que se ejecutan a través de anacron (definido en /etc/anacrontab ).

Jiri
fuente
Sí, efectivamente es cómo solucionarlo, pero tengo más curiosidad acerca de cuál era la intención. Realmente, ni siquiera necesitas cron.hourly para ejecutar, ya que se ejecutará cuando anacron finalmente se ejecuta. Solo ejecutando anacron cada pocos minutos (si no se está ejecutando) lo haría. Supongo que simplemente no terminaron de implementarlo.
Paul
Bueno, parece que cronie implementa anacron a través de un trabajo activado por cron (ver README.anacron ). Así que necesitas cron.hourly o llamada explícita de 0anacron envoltura o directamente anacron -s.
Jiri