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.