Tutoriel Linux

Anacron in Linux: riprendere un’attività quando la macchina è stata spenta

Débutant4 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Si programma un backup per le 2:00 del mattino, ma a quell’ora il portatile è spento. Con un’attività cron standard, l’esecuzione andrà semplicemente persa. anacron risponde a questo caso specifico: avvia l’attività al successivo avvio non appena si accorge che il suo periodo è scaduto.

Lo riservo per attività giornaliere, settimanali o mensili che possono tollerare un ritardo. Per un’esecuzione a intervalli specifici, ad esempio ogni dieci minuti, o per un monitoraggio avanzato per reparto, i timer di cron e systemd rimangono più adatti.

Tux riavvia un computer e si mette in pari con un backup programmato con Anacron
Anacron esegue un’attività ritardata al successivo avvio, quando il periodo di timeout è scaduto.

Scegliere tra cron, anacron e un timer systemd

La scelta dipende principalmente dalla precisione richiesta e dal tempo di avvio della macchina:

  • cron Adatto per un apparecchio che si accende all’orario programmato e per frequenze inferiori a una volta al giorno;
  • UN timer di sistema fornisce un programma più preciso Persistente=verodipendenze e log direttamente correlati a un servizio.

Anacron non sostituisce cron ovunque. Non tenta di eseguire un comando esattamente alle 8:30 del mattino. Verifica se è trascorso il numero di giorni specificato, attende il ritardo configurato, esegue il comando e quindi registra la data. L’ora dell’ultima esecuzione non viene utilizzata nel calcolo.

Su una workstation o un piccolo server che non è in esecuzione continua, questo è spesso sufficiente. Su un server già gestito con systemd, la guida su timer di sistema

Installa Anacron e leggi la configurazione esistente

sudo apt update
sudo apt install anacron
anacron -V

Su Fedora, Rocky Linux o AlmaLinux, l’implementazione è solitamente fornita dalla famiglia di pacchetti Cronie. Verifica il pacchetto installato prima di apportare qualsiasi modifica:

rpm -q cronie cronie-anacron
comando -v anacron

Successivamente, visualizza il file principale senza modificarlo:

sudo cat /etc/anacrontab
sudo ls -l /var/spool/anacron

Il primo file descrive le attività. La seconda posizione contiene i relativi timestamp. A seconda della distribuzione, anacron può essere attivato da cron, da un servizio systemd o all’avvio del sistema. Verifica cosa esiste effettivamente:

systemctl status anacron.service --no-pager
systemctl list-timers --all | grep -i anacron
sudo grep -R "anacron" /etc/cron.d /etc/cron.* 2>/dev/null

Aggiungi un’attività giornaliera con un backup

Inizia salvando la configurazione. Si è verificato un errore in potrebbe impedire che le seguenti attività vengano prese in considerazione.

sudo cp /etc/anacrontab /etc/anacrontab.bak-$(date +%F-%H%M)
sudo nano /etc/anacrontab

Ad esempio, aggiungi questa riga per richiamare uno script di backup già testato:

1 15 backup-home /usr/local/sbin/backup-home.sh >> /var/log/backup-home.log 2>&1

Ciascuno dei quattro settori ha un ruolo specifico:

  • uno
  • quindici aggiunge quindici minuti di ritardo dopo l’avvio di Anacron;
  • casa di riserva è l’identificativo univoco utilizzato per la marcatura temporale e la registrazione;
  • L’ultimo campo contiene l’ordine completo.

Utilizza percorsi assoluti nello script. L’ambiente di un’attività pianificata non è lo stesso della tua sessione interattiva. Inoltre, verifica che il disco di destinazione sia montato prima di qualsiasi copia. Un backup che scrive per errore in una semplice cartella locale può riempire la partizione root senza proteggere alcun dato.

Convalida la sintassi e poi esegui un test controllato

Innanzitutto, testa lo script stesso. Deve essere eseguibile, produrre il risultato atteso e restituire un codice diverso da zero in caso di errore:

sudo test -x /usr/local/sbin/backup-home.sh

eco $?

Successivamente, convalida il file anacrontab senza eseguire l’attività:

sudo anacron -T

L’assenza di output con un codice di ritorno zero indica che la sintassi è accettata. Per eseguire solo il compito casa di riserva senza attendere la scadenza o il periodo previsto, utilizzare:

sudo anacron -f -n -d backup-home

Questo comando avvia effettivamente lo script. Non testarlo con un’eliminazione o una sincronizzazione. --eliminare o un’operazione irreversibile. Le opzioni forzano l’attività, annullano il ritardo e mantengono Anacron in primo piano per visualizzarne l’attività.

Trova i dettagli dell’esecuzione nei log e il timestamp

Dopo il test, verificare innanzitutto il risultato aziendale, ad esempio la presenza e la data dei file salvati. Il timestamp di anacron conferma solo che il comando è stato avviato e completato.

sudo stat /var/spool/anacron/backup-home
sudo tail -n 80 /var/log/backup-home.log

sudo journalctl -u anacron.service -n 80 --no-pager
sudo journalctl -t anacron -n 80 --no-pager

Se questi comandi rimangono vuoti, controlla il registro cron della distribuzione, spesso /var/log/syslog su Debian o Ubuntu e /var/log/cron journalctl e log di avvio Aiuta a ripristinare il processo di attivazione dopo un avvio.

Un dettaglio importante da notare: Anacron registra la data di fine del comando, anche se lo script non è andato a buon fine. Non funge da sistema di ripristino degli errori. Lo script deve registrare il risultato, verificare i prerequisiti e inviare un avviso se l’attività è critica.

Limitazioni da tenere presenti prima di sostituire un cron job

Non spostare un’attività esistente prima di averne identificato l’utente. /etc/anacrontab Generalmente, l’operazione viene eseguita con privilegi di root. Un comando copiato dal crontab di un utente può quindi creare file con il proprietario sbagliato o accedere a dati che non dovrebbe modificare.

Pagina del manuale di Anacron documenta le opzioni di test ed esecuzione. Manuale Anacrontab Specifica i campi per periodo, ritardo, identificatore e ordine. Mantieni il vecchio job cron commentato per un ciclo completo, controlla l’output effettivo dell’attività e poi eliminalo solo quando il processo di recupero funziona correttamente.

sudo apt update && sudo apt upgrade