Introduzione
Cron è un demone di pianificazione che consente di pianificare l'esecuzione delle attività a intervalli specifici. Queste attività sono chiamate cron job e possono essere programmate per essere eseguite per minuto, ora, giorno del mese, mese, giorno della settimana o qualsiasi combinazione di questi.
I Cron Jobs vengono in genere utilizzati per eseguire operazioni di manutenzione del sistema. Ad esempio, è possibile impostare un processo cron per automatizzare attività ripetitive come il backup dei database, l'aggiornamento del sistema con le ultime patch di sicurezza, la cancellazione della cache, l'invio di e-mail e così via.
Questo articolo spiega come elencare i Cron Jobs.
Elencare i Cron Jobs degli utenti
I file crontab degli utenti vengono denominati in base al nome dell'utente e la loro posizione varia in base al sistema operativo. Nelle distribuzioni basate su Red Hat come CentOS, i file crontab sono memorizzati nella directory /var/spool/cron
, mentre su Debian e Ubuntu i file sono memorizzati nella directory /var/spool/cron/crontabs
.
Per ottenere un elenco di tutti i Cron Jobs per l'utente con cui si è attualmente connessi, utilizzare il comando crontab
:
crontab -l
Se l'utente ha impostato cron job, il contenuto dei crontabs dell'utente verrà visualizzato sullo schermo. Altrimenti, il comando stamperà no crontab for <username>
.
Per elencare i cron jobs di altri utenti, utilizzare l'opzione -u
per specificare il nome utente alla fine del comando. Ad esempio, per elencare i cron jobs dell'utente chiamato "alice" dovresti usare:
sudo crontab -u alice -l
Ogni file crontab dell'utente ha come autorizzazioni 600
ed è di proprietà dell'utente. Solo i root e gli utenti con privilegi sudo
possono visualizzare i cron jobs di altri utenti.
Per scoprire quali utenti hanno creato cron job, elencare il contenuto della directory spool
come utente root o sudo:
sudo ls -1 /var/spool/cron/crontabs
L'output sarà simile al seguente:
root
alice
Elencare i Cron Jobs del sistema
Il file /etc/crontab
e i file all'interno della directory /etc/cron.d
sono file crontab a livello di sistema che possono essere modificati solo dagli amministratori di sistema.
Usare cat
, less
o qualsiasi editor di testo per visualizzare il contenuto dei file:
cat /etc/crontab /etc/cron.d/*
Nella maggior parte delle distribuzioni Linux è anche possibile inserire script all'interno delle directory /etc/cron.{hourly,daily,weekly,monthly}
e gli script vengono eseguiti ogni hour/day/week/month
.
Ogni script all'interno di queste directory deve disporre dell'autorizzazione di esecuzione. Altrimenti il cron job non verrà eseguito.
Ad esempio, per visualizzare tutti i Cron Jobs settimanali digitare:
ls -l /etc/cron.weekly/
-rwxr-xr-x 1 root root 811 Feb 21 2020 man-db
Se l'output è vuoto, significa che non ci sono cron jobs settimanali.
Systemd Timer
I timer di Systemd sono file di unità che terminano con il suffisso *.timer
e consentono di eseguire unità di servizio in base al tempo.
Nelle distribuzioni che usano systemd come sistema init, i timer sono usati in alternativa al demone cron standard.
Per visualizzare un elenco di tutti i timer systemd sul computer, eseguire il comando seguente:
systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sat 2020-02-22 18:22:30 CET 17min left Sat 2020-02-22 17:22:29 CET 42min ago dnf-makecache.timer dnf-makecache.service
Sun 2020-02-23 00:00:00 CET 5h 55min left Sat 2020-02-22 16:11:58 CET 1h 52min ago unbound-anchor.timer unbound-anchor.service
Sun 2020-02-23 16:26:55 CET 22h left Sat 2020-02-22 16:26:55 CET 1h 37min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2020-02-24 00:00:00 CET 1 day 5h left Sat 2020-02-22 16:11:58 CET 1h 52min ago fstrim.timer fstrim.service
Conclusione
Ti abbiamo mostrato come elencare i Cron Jobs e i timer di sistema.