Anacron es el cron para equipos de escritorio y portátiles.
Anacron no espera que el sistema funcione las 24 horas del día, los 7 días de la semana como un servidor.
Cuando desee que un trabajo en segundo plano se ejecute automáticamente en una máquina que no funciona las 24 horas del día, los 7 días de la semana, debe usar anacron.
Por ejemplo, si tiene una secuencia de comandos de copia de seguridad programada todos los días a las 23:00 como una tarea cron regular y si su computadora portátil no está encendida a las 11:00 p. m., su tarea de copia de seguridad no se ejecutará.
Sin embargo, si tiene el mismo trabajo programado en anacron, puede estar seguro de que se ejecutará una vez que la computadora portátil vuelva a funcionar.
Formato Anacrontab
Al igual que cron tiene /etc/crontab, anacron tiene /etc/anacrontab.
El archivo /etc/anacrontab tiene los trabajos de anacron mencionados en el siguiente formato.
period delay job-identifier command
El campo 1 es Período de recurrencia: Este es un valor numérico que especifica el número de días.
- 1 – diario
- 7 – semanal
- 30 – mensual
- N:puede ser cualquier valor numérico. N indica el número de días
Nota:También puede usar '@monthly' para un trabajo que debe ejecutarse mensualmente.
El campo 2 es Demora: Esto indica el retraso en minutos. es decir, X cantidad de minutos que anacron debe esperar antes de ejecutar el trabajo después de que se inicie la máquina.
El campo 3 es el identificador de trabajo: Es el nombre del archivo de marca de tiempo del trabajo. Debe ser único para cada trabajo. Estará disponible como un archivo en el directorio /var/spool/anacron. Este archivo contendrá una sola línea que indica la última vez que se ejecutó este trabajo.
# ls -1 /var/spool/anacron/ test.daily cron.daily cron.monthly cron.weekly # cat /var/spool/anacron/test.daily 20110507
El campo 4 es el comando: Comando o script de shell que debe ejecutarse.
Al igual que los scripts de shell, los comentarios dentro del archivo anacrontab comienzan con #
Ejemplo de Anacron
El siguiente ejemplo ejecuta el script /home/sathiya/backup.sh una vez cada 7 días.
El día en que se supone que debe ejecutarse el trabajo de backup.sh, si el sistema está inactivo por algún motivo, anacron ejecutará el script de backup.sh 15 minutos después de que el sistema vuelva a funcionar (sin tener que esperar otros 7 días).
# cat /etc/anacrontab 7 15 test.daily /bin/sh /home/sathiya/backup.sh
START_HOURS_RANGE y RANDOM_DELAY
El ejemplo anterior indica que el script backup.sh debe ejecutarse todos los días, con un retraso de 15 minutos. es decir, cuando se inició la computadora portátil, se ejecutó solo después de 15 minutos.
¿Qué sucede cuando la computadora portátil o de escritorio no se apagó? ¿Cuándo se ejecuta el trabajo? Esto lo especifica la variable de entorno START_HOURS_RANGE en el archivo /etc/anacrontab.
De forma predeterminada, esto se establece en 3-22 en el archivo. Esto indica el intervalo de tiempo de 3 a. m. a 10 p. m.
# grep START /etc/anacrontab START_HOURS_RANGE=3-22
Además del retraso definido por el usuario especificado en el segundo campo del archivo /etc/anacrontab, anacron también agrega aleatoriamente una cantidad x de minutos. La x está definida por la variable RANDOM_DELAY en el archivo /etc/anacrontab.
De forma predeterminada, se establece en 45 en el archivo. Esto significa que anacron agregará x minutos (elegidos aleatoriamente entre 0 y 45) y agregará esto al retraso definido por el usuario.
# grep RANDOM /etc/anacrontab RANDOM_DELAY=45
Cron contra Anacron
Cron y anacron tienen sus propias ventajas y desventajas. Dependiendo de su requerimiento, use uno de ellos.
Cron | Anacron |
---|---|
La granularidad mínima es minuto (es decir, los trabajos se pueden programar para que se ejecuten cada minuto) | La granularidad mínima es solo en días |
Cron job puede ser programado por cualquier usuario normal (si no está restringido por un superusuario) | Anacron solo puede ser utilizado por un superusuario (pero existen soluciones alternativas para que pueda ser utilizado por un usuario normal) |
Cron espera que el sistema esté funcionando las 24 horas del día, los 7 días de la semana. Si se programa un trabajo y el sistema está inactivo durante ese tiempo, el trabajo no se ejecuta. | Anacron no espera que el sistema esté funcionando las 24 horas del día, los 7 días de la semana. Si se programa un trabajo y el sistema está inactivo durante ese tiempo, inicia los trabajos cuando el sistema vuelve a funcionar. |
Ideal para servidores | Ideal para computadoras de escritorio y portátiles |
Use cron cuando un trabajo deba ejecutarse a una hora y minuto en particular | Use anacron cuando un trabajo deba ejecutarse independientemente de la hora y el minuto |