
Tengo un buen manejo de cómo funciona cron/anacron en Linux. Mi pregunta es esta:
- Anacron se ejecuta al iniciar sesión y comprueba si ha pasado más de un día desde que se
/etc/cron.daily
ejecutaron los scripts. - Anacron ejecuta scripts en
/etc/cron.daily
y actualiza la marca de tiempo en/var/spool/anacron/cron.daily
- salidas de anacron
- La computadora permanece encendida por más de 24 horas.
- cron se ejecuta y detecta una coincidencia de tiempo para cron.daily
- cron no hace nada desde
test -x anacrontab" == True
Si mi computadora funciona durante más de 24 horas, ¿cómo ejecuta cron los scripts en cron.daily (esta es una distribución basada en Debian)?
el valor predeterminado /etc/crontab
(que se ejecuta cada minuto) prueba la presencia (o más precisamente, el bit -x) de /usr/bin/anacron
e ignora la /etc/cron.daily
carpeta si la encuentra, pero no parece reiniciar anacron para hacer el trabajo.
EDITAR:
Entonces, cron SÍ inicia anacron desde la /etc/cron.d
carpeta, pero solo si la computadora está encendida e inicia sesión a las 7:30 am todos los días. Después de hacer un poco de kung-fu con hojas de cálculo, llegué a la conclusión de que los scripts /etc/cron.daily
se ejecutarán con un intervalo de entre 1 minuto y 31,5 horas.
Ex:
Escenario 1:
- inicie sesión a las 11:59 pm del 23/05/2021
- suponiendo que la marca de tiempo de Anacron
/etc/cron.daily
es anterior al 23/05/2021, Anacron ejecuta todos los scripts/etc/cron.daily
y actualiza la marca de tiempo al 23/05/2021. - cerrar sesión
- Vuelva a iniciar sesión a las 12:00 a. m. del 24/05/2021
- Anacron ve que la última ejecución fue el 23/05/2021 y ahora es el 24/05/2021, por lo que Anacron ejecuta todos los scripts en
/etc/cron.daily
- tiempo transcurrido entre carreras: 1 minuto
Escenario 2:
- inicie sesión a las 12:00 am del 23/05/2021
- suponiendo que la marca de tiempo de Anacron
/etc/cron.daily
es anterior al 23/05/2021, Anacron ejecuta todos los scripts/etc/cron.daily
y actualiza la marca de tiempo al 23/05/2021. - la computadora permanece encendida e iniciada sesión hasta las 7:30 am del 23/05/2021
- cron ejecuta anacron desde su archivo crontab en
/etc/cron.d
- dado que la marca de tiempo es 23/05/2021, no pasa nada
- la computadora permanece encendida e iniciada sesión hasta las 7:30 a. m. del 24/05/2021
- cron ejecuta anacron desde su archivo crontab en
/etc/cron.d
- Anacron ve que la última ejecución fue el 23/05/2021 y ahora es el 24/05/2021, por lo que Anacron ejecuta todos los scripts en
/etc/cron.daily
- tiempo transcurrido entre carreras: 31,5 horas
Respuesta1
Todos los archivos del sistema /etc/cron.daily
, /etc/cron.weekly
etc. incluyen una entrada para ejecutaranacronque a su vez incluye una entrada para ejecutarcron. /etc/crontab
incluye entradas parapiezas de ejecuciónde modo queanacronestá dirigido porpiezas de ejecucióno porcron.
Otro archivo a considerar es /etc/anacrontab
el que puede anular algunos de los efectos de/etc/crontab
Un sistema importantecronEl archivo relacionado es /etc/cron.daily/logrotate
un script utilizado para iniciar el procesamiento de rotación de registros.
Usuario normalcrontabsse ejecutan independientemente de los cronjobs del sistema.
Tenga en cuenta que /etc/crontab
no se ejecuta cada minuto: la actividad está determinada por las distintas especificaciones de crontab.