2011-09-26 4 views
5

Dalla pagina man di crontab.Cosa succede ai lavori cron quando il sistema è in arresto?

 string   meaning 
     ------   ------- 
     @daily   Run once a day, "0 0 * * *". 
     @midnight  (same as @daily) 

Quindi un lavoro @daily non verrà mai eseguito se il sistema è sempre spento a mezzanotte? Qual è il modo corretto per specificare che voglio eseguire questo lavoro una volta al giorno, ma non mi interessa quando viene eseguito esattamente in un giorno?

+4

dup di http://serverfault.com/questions/52335/job-scheduling-using- crontab-what-will-happen-when-computer-is-shutdown-during-t – jman

+1

I server non sono pensati per essere arrestati durante la notte ... perché non tenerlo online e spegnerlo una volta alla settimana? O almeno cambiare il cron job per essere eseguito prima? –

risposta

2

Il lavoro può essere eseguito, ma probabilmente non verrà completato. cron è implementato tramite demone, quindi è sempre in esecuzione. A seconda dell'ordine di spegnimento del sistema, cron potrebbe effettivamente inviare il segnale di spegnimento abbastanza tardi nel processo di spegnimento, quindi i lavori pianificati per il momento in cui è iniziato lo spegnimento potrebbero ancora essere eseguiti.

ad es. Se l'arresto inizia esattamente alle 00:00:00, ma non è possibile inviare a cron un segnale di omissione fino alle 00:00:05 (5 secondi dopo la mezzanotte (quindi un lavoro di 2 secondi in esecuzione breve potrebbe ancora avere il tempo di completare

Tuttavia, se alcuni servizi da cui dipende il lavoro sono già stati arrestati o in fase di spegnimento, è improbabile che sia in grado di terminare, ad esempio ... lo script esegue il ping su un server mysql per un piccolo pezzo di dati ... ma mysql si chiude alle 00:00:01 e il tuo script non arriva alla porzione mysql fino alle 00:00:02

tl; dr: è una condizione di gara e il tuo lavoro PU exec eseguire , ma probabilmente no.

+1

+1 signore, buona risposta! – chown