¿El programador de trabajos cron es realmente preciso?
Quiero decir, necesito un script para ejecutar todas las noches lo último posible, PERO antes de las 00:00 del día siguiente.
Lo ideal sería ejecutar un trabajo cron a las 23.59 (o 11:59 pm), pero ¿será el sistema realmente preciso? Ya que importa un segundo, ¿debo configurar el trabajo cron en 23:58 para dejarlo en algún momento?
Respuestas:
Lo que cron puede garantizar es que su trabajo comenzará no antes de la hora especificada (sujeto a la precisión del reloj del sistema). Pero no hay forma de darle ninguna garantía sobre el tiempo de terminación del trabajo. Dependerá de muchos factores:
Mi recomendación es cambiar su diseño de tal manera que no se requiera un tiempo de finalización específico.
fuente
O_CREAT
eO_EXCL
indicadores, será atómico siempre que el archivo esté en un sistema de archivos local.Supongo que esto depende de su demonio cron, pero la documentación y el estándar indican que si especifica minutos, el trabajo se ejecutará en el minuto especificado.
Ver:
Tenga en cuenta que su secuencia de comandos se iniciará cuando el reloj llegue a la hora correcta, pero finalizará algún tiempo después de eso.
fuente
Por lo general, cron comenzará a las 23:59:00 , escaneará todos sus archivos crontab, filtrará los que sean relevantes para 23:59 y luego inícielos . Escanear estos archivos es muy rápido, porque no hay muchos y todos incluyen solo unas pocas líneas. Por lo general, los cronjobs comienzan a las 23:59:00 o 23:59:01 Hay formas seguras de ralentizar intencionalmente este proceso. (agregue millones de líneas al crontab, por ejemplo). Si el sistema está totalmente sobrecargado, esto tampoco funcionará tan rápido.
Además, esto obviamente depende de la implementación.
Si necesita tiempos de inicio muy exactos, es mejor que cree un programa que duerma hasta el momento que desee y luego se ejecute (por ejemplo, usando c ++ 11 ). Pero en un sistema operativo no en tiempo real, ¡esto tampoco será exacto! ¡Además, el reloj de la PC no sabe la hora exacta!
En todos los casos, esto solo asegura que el programa se inicie en (más o menos) el tiempo que desee. No puede haber ninguna garantía de que el programa finalice con éxito hasta un momento determinado, por lo que creo firmemente que debe cambiar algo en ese requisito.
fuente
Depende del tiempo total de ejecución del script y la precisión del tiempo del servidor.
lanzará su script exactamente a las 23:59, pero, si tiene algunos comandos que funcionan mucho tiempo, parte del script puede ejecutarse después de la medianoche.
fuente