GNU/Linux >> Tutoriales Linux >  >> Linux

¿Dónde está el temporizador Cron?

¿Hay alguna forma de acceder al cron? temporizadores y obtener los segundos restantes hasta la próxima ejecución de scripts en el crontab o tal vez los segundos desde el último?

Respuesta aceptada:

No es fácil. crond espera una señal del kernel y se va a dormir. Cuando recibe la señal, comprueba si hay cronjobs para ejecutar en ese minuto, los inicia y vuelve a dormir.

Es un diseño muy eficiente:cron no usa ninguna CPU mientras está durmiendo. Tampoco tiene conciencia del paso del tiempo. A medida que se va a dormir, establece un "tiempo de espera" basado en el tiempo que transcurre antes de que se deba ejecutar el siguiente comando de cualquier cronjob "registrado".

En Solaris 10:

sol10-primary:/> # pflags  271  
271:    /usr/sbin/cron
        data model = _ILP32  flags = ORPHAN|MSACCT|MSFORK
 /1:    flags = ASLEEP  pollsys(0x8047c70,0x1,0x8047ce8,0x806ba00)

Mientras rastrea el demonio cron, verá que se duerme con un tiempo de espera, como se muestra a continuación:

waitid(P_ALL, 0, 0x08047CD0, WEXITED|WTRAPPED|WNOHANG) Err#10 ECHILD
time()                                          = 1361952435
pollsys(0x08047C70, 1, 0x08047CE8, 0x0806BA00) (sleeping...)
        fd=3  ev=POLLRDNORM rev=0
        timeout: 105.000000000 sec
        sigmask = 0 0 0 0

Cuando actualiza cualquier trabajo cron, el proceso de suspensión también se activa pero para actualizar su propia configuración, después de lo cual volverá a dormir con el nuevo valor de tiempo de espera.

Es posible ver el tiempo de espera establecido. Tenga en cuenta que cron llamó a time syscall justo antes de que se fuera a dormir (lo que devuelve los segundos desde el epoc), por lo que si ha observado esto (es decir, rastreó el proceso cuando llamó a time() syscall, podrá restar ese tiempo desde el actual y compárelo con el tiempo de espera establecido en la llamada pollsys.

Entonces… como dije, no es fácil.


Linux
  1. ¿Cómo funcionan las partes internas del demonio Cron?

  2. ¿A dónde van los archivos cuando se emite el comando Rm?

  3. ¿Dónde está el archivo Inittab?

  4. Crontab Log:cómo registrar la salida de mi secuencia de comandos Cron

  5. ¿Dónde está la función itoa en Linux?

El comando del temporizador en Linux

Tutorial sobre el uso del comando Timeout en Linux

¿Dónde está el archivo php.ini en una PC con Linux/CentOS?

¿Dónde está documentada la ABI x86-64 System V?

¿Cuál es la precisión de los temporizadores de intervalo en Linux?

¿Dónde está el tenedor() en la bomba tenedor :(){ :|:&};:?