Confuso sulla relazione tra cron e anacron


19

Ho cercato su Google invano una spiegazione generale di come cron e anacron lavorano insieme. Le pagine man sono un po 'troppo profonde per me un tuffo a questo punto.

Mi confondo perché aggiungo compiti a crontab, e funziona, ma quando li elimino da crontab, continuano a funzionare sotto anacron. Vedo i compiti in /etc/cron.daily, ma non sono sicuro di come siano arrivati. cron è sempre in esecuzione sul mio sistema, ma non anacron. In effetti, vedo che anacron è avviato da cron!

Fondamentalmente mi piacerebbe un'introduzione a livello di utente su come aggiungere e rimuovere attività, poiché le risposte facilmente googleable che ti dicono di modificare chiaramente crontab non sono complete. Un collegamento a un tutorial andrebbe bene.

Risposte:


19

Entrambi crone anacronsono demoni che possono pianificare l'esecuzione di attività ricorrenti fino a un certo momento definito dall'utente.

La differenza principale tra crone anacronè che il primo presuppone che il sistema funzioni continuamente. Se il sistema è spento e durante questo periodo è stato pianificato un lavoro, il lavoro non verrà mai eseguito.

D'altro canto anacronè "anacronistico" ed è progettato per sistemi che non funzionano 24x7. Per farlo funzionare anacronusa file con data e ora per scoprire quando sono stati eseguiti i suoi ultimi comandi. Mantiene anche un file /etc/anacrontabproprio come cronfa. Inoltre, cron.dailyesegue anacron ogni giorno. Quindi, anacronpuò eseguire un lavoro solo una volta al giorno, ma cronpuò essere eseguito tutte le volte che ogni minuto.

Da man anacrontab:

Quando eseguito, Anacron legge un elenco di lavori da un file di configurazione, normalmente / etc / anacrontab (vedi anacrontab (5)). Questo file contiene l'elenco dei lavori controllati da Anacron. Ogni voce di lavoro specifica un periodo in giorni, un ritardo in minuti, un identificativo univoco del lavoro e un comando shell.

Per ogni lavoro, Anacron controlla se questo lavoro è stato eseguito negli ultimi n giorni, dove n è il periodo specificato per quel lavoro. In caso contrario, Anacron esegue il comando shell del lavoro, dopo aver atteso il numero di minuti specificato come parametro di ritardo.

Una volta terminato il comando, Anacron registra la data in un file di data e ora speciale per quel lavoro, in modo da sapere quando eseguirlo di nuovo. Per i calcoli dell'ora viene utilizzata solo la data. L'ora non è utilizzata.

Ciò significa che se un'attività è pianificata per essere eseguita quotidianamente e il computer è stato spento durante quel periodo, quando viene eseguito anacron, può vedere che l'ultima attività è stata eseguita più di 24 ore fa ed eseguire l'attività correttamente.

Ad esempio, se si specifica quanto segue in /etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

e il giorno in cui il script.shlavoro dovrebbe essere eseguito, se il sistema non è in esecuzione, anacronverrà eseguito i script.sh15 minuti dopo il riavvio del sistema.

Pochi riferimenti:


Grazie, quel tutorial di Digital Ocean è particolarmente buono, come spesso accade. Non sono sicuro di come mi sia perso, quindi apprezzo il link.
Marmo organico

Grazie. Con "cron.daily esegue anacron tutti i giorni", preferisci "cron.daily esegue anacron ogni giorno"?
Tim

Grazie per questo. - Ho rimosso anacronda tutti i miei VPS in quanto sono sistemi sempre attivi. (Non ho idea di come sia arrivato lì, in primo luogo, non ne avevo sentito parlare.) Le mie crontabvoci (giornaliere, settimanali, ...) ora funzionano tutte nei tempi previsti.
Adambean,
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.