anacron es un programa informático que realiza una programación periódica de comandos, algo que tradicionalmente hace cron , pero sin asumir que el sistema está funcionando de forma continua. Por lo tanto, se puede utilizar para controlar la ejecución de tareas diarias, semanales y mensuales (o cualquier cosa con un período de n días) en sistemas que no funcionan las 24 horas del día. anacron fue concebido e implementado originalmente por Christian Schwarz en Perl , para el sistema operativo Unix . Más tarde fue reescrito en C por Itai Tzur; entre los mantenedores se encuentran Sean 'Shaleh' Perry y Pascal Hakim. [1]
Desde 2009, la implementación cron de Red Hat, cronie , ha incluido anacron. [2] [3] Desde entonces, Red Hat ha actualizado anacron como parte de cronie. [4]
Los sistemas Unix suelen ejecutar "tareas de mantenimiento" como rotación de registros , eliminación de archivos no utilizados, indexación de archivos locales para el motor de búsqueda, envío de informes de uso del disco, etc. Se puede utilizar un programa llamado cron para programar estas tareas.
Con cron , las tareas suelen programarse para ejecutarse cuando se espera que el sistema esté inactivo. Si el sistema está apagado en el momento en que se debe ejecutar una tarea, esta no se ejecutará. Anacron es diferente y mueve las tareas a diferentes momentos para que se ejecuten cuando el sistema está encendido y utiliza cron.
Sólo el administrador del sistema puede configurar tareas de anacron. Por el contrario, cron permite a los usuarios no administradores configurar tareas programadas. Si es necesario, un usuario no administrador puede utilizar el comando at de Unix para solicitar una tarea programada (cuya ejecución está garantizada). Al iniciarse, este comando puede solicitar automáticamente su ejecución en una fecha futura, dando así la apariencia de una tarea programada regularmente, con ejecución garantizada.
anacron puede ejecutar tareas solo una vez al día (o con menor frecuencia, como semanal o mensualmente). Por el contrario, cron permite que las tareas se ejecuten cada minuto (pero no garantiza su ejecución si el sistema deja de funcionar). En la práctica, esto no suele ser un problema, ya que es poco frecuente tener una tarea cuya ejecución se deba garantizar con más frecuencia que (al menos) una vez al día, especialmente en un sistema que no necesariamente está en funcionamiento todo el tiempo.
Si el sistema se reinicia o se inicia después de la medianoche, las tareas diarias se ejecutan después de un retraso especificado por el usuario de manera sincronizada (orden secuencial), de modo que solo se ejecuta una tarea anacron a la vez. Cuando esa tarea termina, se inicia la siguiente y así sucesivamente.
Este comportamiento se puede anular para permitir tareas simultáneas (paralelas), pero puede consumir recursos del sistema que el usuario necesita para realizar su trabajo. Por el contrario, cron solo ejecutará tareas diarias a la hora establecida (por ejemplo, en mitad de la noche, cuando presumiblemente la máquina no esté en uso).
fcron es otra implementación de cron, que intenta cumplir los roles de Vixiecron y anacron.