Pianificazione dei lavori tramite crontab, cosa accadrà quando il computer viene spento durante quel periodo?


85

Pianifico alcune attività usando crontab.

Cosa succederà se il mio computer viene spento o spento durante il periodo in cui cron era programmato per fare qualcosa?

Ogni cron job mancante viene eseguito dopo l'accensione del computer o i processi persi per quel giorno vengono ignorati? Se i lavori persi non riprendono, c'è un modo per configurare cron in modo che esegua le attività perse dopo aver riacceso il computer?


3
Ho provato a cercare il tutorial anacron nel web ma non sono riuscito a trovarne di buoni. Anche guardare le pagine man non mi è stato di grande aiuto. Come posso cambiare crontab già esistente in modo che venga cambiato in anacron ?? O qualsiasi tutorial in questo sarà molto utile
seg.server.fault

1
Ho modificato la mia risposta per includere alcuni esempi. Spero che aiuti!
Jeff

Risposte:


70

Quando il computer viene spento (o altrimenti il ​​demone cron non è in esecuzione), i lavori cron non verranno avviati.

Se si dispone di lavori che si desidera eseguire dopo il fatto in quei momenti in cui il computer è spento, utilizzare anacron. Installato di default, vedere "man anacron", "man anacrontab" o il file / etc / anacrontab per maggiori informazioni.

Ubuntu utilizza anacron per impostazione predefinita per le voci crontab in:

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

lasciando che i crontab rimanenti vengano gestiti dal demone cron principale, in particolare:

/etc/crontab
/etc/cron.d
/var/spool/cron

APPUNTI

Anacron stesso non viene eseguito come demone, ma si basa su script di avvio del sistema e cron stesso per l'esecuzione.

Nella casella Ubuntu 8.04 che sto guardando, /etc/init.d/anacron viene eseguito all'avvio, e di nuovo da cron ogni mattina alle 07:30.

Il README su /usr/share/doc/anacron/README.gz ha un po 'più di informazioni rispetto a quelle contenute nelle manpage.

ESEMPI

Per semplici lavori "giornalieri", "settimanali", "mensili", inserisci una copia o un link simbolico allo script in una delle directory /etc/cron.{daily|weekly|monthly} sopra. Anacron si occuperà di eseguirlo quotidianamente / settimanalmente / mensilmente, e se il tuo computer è spento il giorno in cui gli script "settimanali" verrebbero normalmente eseguiti, li eseguirà alla successiva accensione del computer.

Come altro esempio, supponendo che tu abbia uno script qui: /usr/local/sbin/maint.sh

E desideri eseguirlo ogni tre giorni, la voce standard in / etc / crontab sarebbe simile a questa:

# m h dom mon dow user  command
0 0 */3 * * root /usr/local/sbin/maint.sh

Se il computer non era acceso alle 00:00 il 3 del mese, il lavoro non verrebbe eseguito fino al 6.

Per fare in modo che il lavoro venga eseguito il 4 ° quando il computer è spento e "manca" l'esecuzione il 3 °, si dovrebbe usare questo in / etc / anacrontab (non dimenticare di rimuovere la linea da / etc / crontab):

# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh

Il "ritardo" di "5" sopra indica che Anacron attenderà 5 minuti prima di eseguire questo lavoro. L'idea è di impedire all'anacron di sparare immediatamente al momento dell'avvio.


5
Di default Ubuntu usa anacron.
3dinfluence

1
grazie 3dincluence - risposta adattata per indicare quali crontab sono gestiti da anacron in un setip ubuntu predefinito.
Jeff

2
se metti lo script in /etc/cron.*/ anziché avere la sua voce crontab, non avere un "." nel nome del file dello script. debian e ubuntu usano run-part per eseguire tali script, e di default run-parts ignorerà i file con a. nel nome del file - questo in modo che non esegua le versioni .dpkg-old e .dpkg-dist degli script che vengono rinominati dagli aggiornamenti. quindi chiama lo script o il link simbolico "maint" anziché "maint.sh".
CAS

OpenSUSE usa cronie di default dall'11.2 in poi (a Tumbleweed / Leap 42.2 al momento). Per usare anacron, installa il cronie-anacronpacchetto.
Palswim,

13

Questo dipende da quale cron scheduler usi. Il demone cron di base vanilla non eseguirà attività perse a causa di tempi di inattività del sistema. Tuttavia, ci sono altri programmatori cron appositamente progettati per questa situazione che lo faranno per te. I due esempi più comuni sono anacron e fcron .


5

Le attività pianificate mentre il computer è spento non verranno eseguite quando il computer si riaccende


2

Se si arresta mentre i processi cron sono in esecuzione, il sistema si arresta e i processi cron si arrestano (o non vengono eseguiti).

Un'alternativa che puoi verificare è anacron.


2

Dipende davvero dal cron deamon che stai eseguendo. Vixie-cron salterà semplicemente i cronjob persi. fcron eseguirà le miss perse non appena possibile. IIRC si basa anche su vixie-cron, quindi se è quello che stai cercando potresti voler dare un'occhiata a fcron.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.