Programas una copia de seguridad para las 2:00 a. m., pero el portátil está apagado a esa hora. Con una tarea programada estándar (cron job), la ejecución simplemente se pierde. anacron Responde a este caso específico: inicia la tarea en el siguiente arranque tan pronto como detecta que su período ha expirado.
Lo reservo para tareas diarias, semanales o mensuales que puedan tolerar una demora. Para una ejecución puntual, cada diez minutos o para una monitorización avanzada por departamento, los temporizadores cron y systemd siguen siendo más adecuados.

Elegir entre cron, anacron y un temporizador de systemd
La elección depende principalmente de la precisión requerida y del tiempo de puesta en marcha de la máquina:
- cron Adecuado para una máquina que se enciende a la hora programada y para frecuencias inferiores a una vez al día;
- anacron Trabaja por días y se pone al día con una tarea diaria, semanal o mensual después de un período de descanso;
- A temporizador del sistema proporciona un cronograma más preciso
Persistente=verdaderodependencias y registros directamente relacionados con un servicio.
Anacron no reemplaza a cron en todas partes. No intenta ejecutar un comando exactamente a las 8:30 a. m. Comprueba si ha transcurrido el número de días especificado, espera el tiempo de espera configurado, ejecuta el comando y luego registra la fecha. La hora de la última ejecución no se utiliza en el cálculo.
En una estación de trabajo o un servidor pequeño que no esté funcionando continuamente, esto suele ser suficiente. En un servidor ya administrado con systemd, la guía en el temporizadores del sistema Ofrece una solución más flexible para una nueva tarea.
Instale Anacron y lea la configuración existente.
sudo apt update
sudo apt install anacron
anacrón -V
En Fedora, Rocky Linux o AlmaLinux, la implementación suele estar a cargo de la familia de paquetes Cronie. Compruebe el paquete instalado antes de modificar nada:
rpm -q cronie cronie-anacron
comando -v anacron
A continuación, muestre el archivo principal sin editarlo:
sudo cat /etc/anacrontab
sudo ls -l /var/spool/anacron
El primer archivo describe las tareas. La segunda ubicación contiene sus marcas de tiempo. Dependiendo de la distribución, anacron puede activarse mediante cron, un servicio systemd o al inicio del sistema. Compruebe qué existe realmente:
systemctl status anacron.service --no-pager
sudo grep -R "anacron" /etc/cron.d /etc/cron.* 2>/dev/null
Agregar una tarea diaria con una copia de seguridad
Comience guardando la configuración. Se produjo un error en /etc/anacrontab puede impedir que se tengan en cuenta las siguientes tareas.
sudo cp /etc/anacrontab /etc/anacrontab.bak-$(date +%F-%H%M)
sudo nano /etc/anacrontab
Por ejemplo, agregue esta línea para llamar a un script de copia de seguridad que ya ha sido probado:
1 15 backup-home /usr/local/sbin/backup-home.sh >> /var/log/backup-home.log 2>&1
Cada uno de los cuatro campos tiene una función específica:
define un período de un día;quinceañade quince minutos de retraso después de que Anacron se inicie;casa de respaldoes el identificador único utilizado para el registro y el sellado de tiempo;- El último campo contiene el pedido completo.
Utilice rutas absolutas en el script. El entorno de una tarea programada no es el mismo que el de su sesión interactiva. Además, verifique que el disco de destino esté montado antes de realizar cualquier copia. Una copia de seguridad que escriba por error en una carpeta local simple puede llenar la partición raíz sin proteger ningún dato.
Valida la sintaxis y luego ejecuta una prueba controlada.
sudo test -x /usr/local/sbin/backup-home.sh
sudo /usr/local/sbin/backup-home.sh
eco $?
A continuación, valide el archivo anacrontab sin ejecutar la tarea:
casa de respaldo Sin esperar a que venza su fecha límite o período, utilice:
sudo anacron -f -n -d backup-home
Este comando ejecuta el script. No lo pruebes con una operación de eliminación o sincronización. --borrar o una operación irreversible. Las opciones fuerzan la tarea, cancelan la demora y mantienen Anacron en primer plano para mostrar su actividad.
Encuentre los detalles de ejecución en los registros y la marca de tiempo.
Tras la prueba, compruebe primero el resultado, por ejemplo, la presencia y la fecha de los archivos guardados. La marca de tiempo de anacron solo confirma que el comando se ejecutó y completó correctamente.
sudo tail -n 80 /var/log/backup-home.log
En una distribución con una unidad systemd, véase también:
sudo journalctl -u anacron.service -n 80 --no-pager
Si estos comandos permanecen vacíos, revise el registro cron de la distribución, a menudo /var/log/syslog en Debian o Ubuntu y Acerca de la familia RHEL. La guía sobre journalctl y registros de inicio Ayuda a restaurar el proceso de activación después de un arranque.
Un detalle importante a tener en cuenta: Anacron registra la fecha de finalización del comando, incluso si el script falla. No funciona como un sistema de recuperación de errores. El script debe registrar su resultado, verificar sus requisitos previos y enviar una alerta si la tarea es crítica.
Limitaciones que debe tener en cuenta antes de reemplazar una tarea programada (cron job)
No utilice anacron para tareas que deban comenzar en un minuto específico. Su duración se calcula en días y el retraso comienza cuando se activa anacron. Tras varios días de inactividad, cada ID retrasado se ejecuta una sola vez, no una vez por cada día de inactividad.
No mueva una tarea existente antes de identificar a su usuario. Generalmente se procesa con privilegios de administrador. Un comando copiado del crontab de un usuario puede crear archivos con el propietario incorrecto o acceder a datos que no debería modificar.
Allá Documenta las opciones de prueba y ejecución. Manual de Anacrontab Especifique los campos para el período, el retraso, el identificador y el orden. Mantenga la tarea programada anterior comentada durante un ciclo completo, verifique el resultado real de la tarea y elimínela solo cuando el proceso de recuperación esté funcionando.