2010-10-20 12 views
31

¿Cómo pueden los demonios "modernos" croninternamente programar sus trabajos? Algunos crond s se utilizan para programar una ejecución de vez en cuando a través de at. Así que después de un crontab se escribe, lo hace crond:¿Cómo cron planifica internamente los trabajos?

  1. analizar el crontab para todos los eventos futuros y el sueño de los intervalos?
  2. ¿Encuesta cada día una base de datos crontab agregada para determinar si la hora actual coincide con el patrón de programación?
  3. ¿Otro?

Gracias,

Respuesta

44

Unos grillos escuchado en esta pregunta. El bueno de RTFC con unos papeles de simulación de eventos discretos y Wikipedia:

http://en.wikipedia.org/wiki/Cron#Multi-user_capability

El algoritmo utilizado por este cron es como sigue:

  1. En el arranque, busque un archivo nombre .crontab en los directorios de inicio de todos los titulares de cuentas.
  2. Para cada archivo crontab encontrado, determine la próxima vez en el futuro que se ejecutará cada comando.
  3. Coloque los comandos en la lista de eventos de Franta-Maly con su hora correspondiente al y su especificador de tiempo "cinco campo".
  4. Introduzca bucle principal:
    1. examine la entrada de tareas en la cabeza de la cola, calcular qué tan lejos en el futuro que se va a ejecutar.
    2. Dormir durante ese período de tiempo.
    3. Al despertar y después de verificar la hora correcta, ejecute la tarea en el encabezado de la cola (en segundo plano) con los privilegios del usuario que la creó .
    4. Determine la próxima vez en el futuro para ejecutar este comando y colocar de nuevo en la lista de eventos en ese momento
+1

Sobre la base de la página de '' man' para cron', parece como se despierta cada minuto para comprobar si debe ejecutar un trabajo: "cron se despierta cada minuto, examina todos los crontabs almacenados, verifica cada comando para ver si se debe ejecutar en el minuto actual". Esto es de Vixie Cron que vino instalado en Debian (escrito por Paul Vixie). Creo que el algoritmo que describiste se usó cuando despertar cada minuto era demasiado costoso. – Paul

+1

Aquí está la página del manual: http://www.unix.com/man-page/debian/8/cron/ – Paul

+0

Desearía poder encontrar una descripción de una lista de eventos de fraternidad en algún lugar en línea. ¿Es esta una estructura de datos común? –

Cuestiones relacionadas