Cuando tu computadora está apagada (o el demonio cron no está funcionando), los trabajos programados no se iniciarán.
Si tienes trabajos que te gustaría ejecutar después del hecho durante esos momentos en los que la computadora está apagada, utiliza anacron. Instalado por defecto, consulta "man anacron", "man anacrontab", o el archivo /etc/anacrontab para más información.
Ubuntu utiliza anacron por defecto para las entradas de crontab en:
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
dejando que los crontabs restantes sean manejados por el demonio cron principal, específicamente:
/etc/crontab
/etc/cron.d
/var/spool/cron
NOTAS
Anacron en sí no se ejecuta como un demonio, pero depende de los scripts de inicio del sistema y el propio cron para ejecutarse.
En la caja de Ubuntu 8.04 que estoy viendo, /etc/init.d/anacron se ejecuta al inicio, y de nuevo por cron cada mañana a las 07:30.
El README en /usr/share/doc/anacron/README.gz tiene un poco más de información que la contenida en las páginas del manual.
EJEMPLOS
Para trabajos simples "diarios", "semanales", "mensuales", copia o crea un enlace simbólico al script en uno de los directorios /etc/cron.{daily|weekly|monthly} arriba mencionados. Anacron se encargará de ejecutarlo diaria/semanal/mensualmente, y si tu computadora está apagada en el día en que normalmente se ejecutarían los scripts "semanales", los ejecutará la próxima vez que la computadora esté encendida.
Como otro ejemplo, asumiendo que tienes un script aquí: /usr/local/sbin/maint.sh
Y deseas ejecutarlo cada tres días, la entrada estándar en /etc/crontab se vería así:
# m h dom mon dow user command
0 0 */3 * * root /usr/local/sbin/maint.sh
Si tu computadora no estaba encendida a las 00:00 el día 3 del mes, el trabajo no se ejecutará hasta el día 6.
Para que el trabajo se ejecute en el día 4 cuando la computadora está apagada y "pierde" la ejecución el día 3, debes utilizar esto en /etc/anacrontab (no olvides quitar la línea de /etc/crontab):
# periodo demora identificador-de-trabajo comando
3 5 maint-job /usr/local/sbin/maint.sh
La "demora" de "5" arriba significa que anacron esperará 5 minutos antes de ejecutar este trabajo. La idea es prevenir que anacron ejecute cosas inmediatamente al inicio.
3 votos
Intenté buscar un tutorial de anacron en la web pero no pude encontrar ninguno bueno. Revisar las páginas del manual tampoco me ayudó mucho. ¿Cómo puedo cambiar el crontab ya existente para que se cambie a anacron? Cualquier tutorial al respecto sería de gran ayuda.
1 votos
He editado mi respuesta para incluir algunos ejemplos. ¡Espero que eso ayude!