En la mayoría de las modernas distribuciones de Linux el sistema hace uso de crones, del mismo tipo que el usuario puede manejar. El cron es un daemon (un servicio) que sirve para ejecutar comandos determinados en momentos determinados, por ejemplo se puede usar para correr automáticamente X tarea todos los días a una hora en específico.
Anacron funciona de forma similar, aunque tiene algunas pequeñas variaciones. Al contrario de cron, anacron no asume que el sistema ha estado activo permanentemente, lo cual hace que sea más utilizado en equipos que no están encendidos las 24 horas del día, aunque aún así juega un rol importante en muchos servidores. Es capaz de controlar tareas diarias, semanales y mensuales, y podemos encontrar los crones diarios, semanales y mensuales en las siguientes carpetas respectivamente:
/etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Y ahora viene la pregunta del título: ¿a qué hora corren estos crones? En las modernas distros RHEL / CentOS 6.x es anacrontab quien nos brinda la respuesta:
cat /etc/anacrontab
Ese es el archivo en cuestión y tendrá un formato similar al siguiente:
# /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # the maximal random delay added to the base delay of the jobs # RANDOM_DELAY=45 # the jobs will be started during the following hours only START_HOURS_RANGE=3-22 #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
Aquí hay un par de cosas que necesitamos entender:
- START_HOURS_RANGE -> esta variable indica el período de tiempo en el cual las tareas se pueden iniciar. De 03AM a 10PM en este caso.
- RANDOM_DELAY -> en este ejemplo no está activa, pero sirve para añadir minutos adicionales aleatorios para comenzar a correr las tareas. En este caso se añadirían entre 0 y 45 minutos. Es complementada por la anterior y por «delay in minutes».
- period in days -> está presente para indicarnos, en días, la frecuencia de las tareas.
- delay in minutes -> el número indica los minutos que deben pasar desde el comienzo del START_HOURS_RANGE para que se corran los crones.
En otras palabras, con esta configuración los crones comenzarán a correr a estas horas:
Crones diarios -> 3:05AM (comienzo del período de tareas + 5 minutos)
Crones semanales -> 3:25AM
Crones mensuales -> 3:45AM
En versiones viejas de CentOS, como las 5.x o las 4.x, los horarios de los crones se pueden verificar en el crontab:
cat /etc/crontab
Si tienes alguna duda sobre el uso de anacrontab o si algo no ha quedado claro, por favor déjanos un comentario.