GNU/Linux >> Linux Esercitazione >  >> Linux

Dov'è il timer Cron?

C'è un modo per accedere a cron timer e ottenere i secondi rimanenti fino alla successiva esecuzione di script nel crontab o forse i secondi dall'ultimo?

Risposta accettata:

Non facilmente. crond attende un segnale dal kernel e va a dormire. Quando riceve il segnale, controlla se ci sono cronjob da eseguire in quel minuto, li avvia e torna a dormire.

È un design molto efficiente:cron non utilizza alcuna CPU mentre è inattivo. Non ha nemmeno la consapevolezza del tempo che passa. Quando va a dormire, imposta un "timeout" basato su quanto tempo è necessario prima che il comando successivo da qualsiasi cronjob "registrato" debba essere eseguito.

Su 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)

Durante la traccia del demone cron, vedrai che va a dormire con un timeout, come di seguito:

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

Quando aggiorni qualsiasi processo cron, anche il processo di sospensione viene riattivato, ma per aggiornare la propria configurazione, dopodiché tornerà a dormire con il nuovo valore di timeout.

È possibile visualizzare il timeout impostato. Nota che cron ha chiamato il time syscall appena prima di quando è andato a dormire (che restituisce i secondi da epoc), quindi se hai osservato questo (cioè hai tracciato il processo quando ha chiamato time() syscall, sarai in grado di sottrarre quell'ora dalla corrente e confrontarla con il timeout impostato sulla chiamata pollsys.

Quindi... come ho detto, non facilmente.


Linux
  1. Dov'è il registro cron / crontab? / Come abilitare il Cron Log?

  2. Come funzionano gli interni del demone Cron?

  3. Dove vanno a finire i file quando viene emesso il comando Rm?

  4. Dove si trova il filesystem del sottosistema Linux in Windows 10?

  5. dove si trova il database aggiornatob?

Pianificazione delle attività con il comando cron di Linux

Il comando timer in Linux

Tutorial sull'uso del comando Timeout su Linux

Dov'è il file php.ini su un PC Linux/CentOS?

Dove è documentato l'ABI x86-64 System V?

Qual è la precisione dei timer a intervalli in Linux?