anacron
- Eseguire i Comandi con Regolarità¶
Prerequisiti¶
- Una macchina con Rocky Linux.
- Sapere come utilizzare l'editor preferito per modificare il file di configurazione (ad esempio vim) nell'ambiente da riga di comando.
- Comprendere la gestione di base dei pacchetti RPM.
Presupposti¶
- Avete capito la conoscenza di base di bash, python o altri strumenti di scripting/programmazione, e volete eseguire lo script automaticamente.
- Si è connessi come utente root, oppure si passa a root con
su - root
.
anacron
Introduzione¶
anacron
è usato per eseguire comandi su base periodica, e la frequenza operativa è definita in unità di giorni. È adatto ai computer che non funzionano 24/7, come i computer portatili e i desktop. Supponiamo che abbiate un compito programmato (come uno script di backup) da eseguire la mattina presto di ogni giorno usando crontab. Quando ti addormenti, il tuo desktop/laptop si spegne. Il tuo script di backup non verrà eseguito. Tuttavia, se si usa anacron
, si può essere certi che la prossima volta che si accende il desktop/laptop, lo script di backup verrà eseguito.
L'aspetto di anacron
non è quello di sostituire crontab
, ma di completare crontab
. La loro relazione è la seguente:
anacron
File di Configurazione¶
shell > rpm -ql cronie-anacron
/etc/anacrontab
/etc/cron.hourly/0anacron
/usr/lib/.build-id
/usr/lib/.build-id/0e
/usr/lib/.build-id/0e/6b094fa55505597cb69dc5a6b7f5f30b04d40f
/usr/sbin/anacron
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man8/anacron.8.gz
/var/spool/anacron
/var/spool/anacron/cron.daily
/var/spool/anacron/cron.monthly
/var/spool/anacron/cron.weekly
Prima controlla il file di configurazione predefinito:
shell > cat /etc/anacontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# Default 45 minutes delay for each specified job anacron random increase 0-45 minutes.
RANDOM_DELAY=45
# Specify the scope of work time, represented here 3:00 ~ 22:00
START_HOURS_RANGE=3-22
# period in days delay in minutes job-identifier command
# Boot every day to check whether the files in the directory /etc/cron.daily be executed in 5 minutes, if not executed today, then to the next
1 5 cron.daily nice run-parts /etc/cron.daily
# Every 7 days within 25 minutes if the file check /etc/cron.weekly directory is executed after boot, if not executed within a week, it will be executed next
7 25 cron.weekly nice run-parts /etc/cron.weekly
# Whether the files in the directory /etc/cron.monthly 45 minutes checking is performed after every start for a month
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
/etc/cron.hourly/ -Tramite journalctl -u crond.service
, potete sapere che i file messi dentro sono effettivamente chiamati da crond.server, il che significa che il comando sarà eseguito dopo il primo minuto di ogni ora. Come segue:
shell > cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
shell > journalctl -u crond.service
- Logs begin at Wed 2021-10-20 19:27:39 CST, end at Wed 2021-10-20 23:32:42 CST. -
October 20 19:27:42 li systemd[1]: Started Command Scheduler.
October 20 19:27:42 li crond[733]: (CRON) STARTUP (1.5.2)
October 20 19:27:42 li crond[733]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 76% if used.)
October 20 19:27:42 li crond[733]: (CRON) INFO (running with inotify support)
October 20 20:01:01 li CROND[1897]: (root) CMD (run-parts /etc/cron.hourly)
October 20 21:01:01 li CROND[1922]: (root) CMD (run-parts /etc/cron.hourly)
October 20 22:01:01 li CROND[1947]: (root) CMD (run-parts /etc/cron.hourly)
October 20 23:01:01 li CROND[2037]: (root) CMD (run-parts /etc/cron.hourly)
Per ulteriori informazioni sul file di configurazione, si prega di consultare la pagina del manuale
Uso dell'utente¶
Per fare in modo che certi file vengano eseguiti entro questi tempi definiti automaticamente, tutto quello che dovete fare è copiare il file di script nella relativa directory e assicurarvi che abbia il permesso di esecuzione x (chmod +x) . Pertanto, basta lasciare che il sistema esegua automaticamente lo script in uno di questi orari programmati, il che rende il compito di automazione molto facile.
Usiamo cron.daily per illustrare il processo di esecuzione di /etc/anacrontab:
anacron
legge il file /var/spool/anacron/cron.daily , e il contenuto del file mostra l'ora dell'ultima esecuzione.- Rispetto all'ora corrente, se la differenza tra i due tempi supera 1 giorno, il lavoro cron.daily verrà eseguito.
- Questo lavoro può essere eseguito solo dalle 03:00-22:00.
- Controlla se un file viene eseguito dopo 5 minuti dall'avvio. Quando il primo viene eseguito, sarà casualmente ritardato di 0~45 minuti per eseguire il successivo.
- Usa il parametro nice per specificare la priorità predefinita e usa il parametro run-parts per eseguire tutti i file eseguibili nella directory /etc/cron.daily/.
Comandi Correlati¶
Uso dell comando anacron
, le opzioni comunemente usate sono:
Opzioni | Descrizione |
---|---|
-f | Eseguire tutti i lavori, ignorando i timestamp |
- u | Aggiorna il timestamp all'ora corrente senza eseguire alcuna azione |
-T | Verificare la validità del file di configurazione /etc/anacrontab |
Per ulteriori informazioni di aiuto, sfogliare la pagina del manuale
Author: tianci li
Contributors: Steven Spencer, Franco Colussi