Il comando crontab viene utilizzato per mantenere i file crontab di ogni specifico utente. Per default l’output generato da un comando o uno script (in caso ne venga prodotto uno), viene inviato per posta all’email locale dell’account proprietario della crontab.
Disabilitare gli alert email provenienti da crontab
Per inibire l’invio degli output che scaturiscono dall’esecuzione dei cron job all’email locale dell’utente, possiamo utilizzare uno dei seguenti comandi
> /dev/null 2>&1
> /dev/null
> /dev/null 2>&1 || true
Letteralmente questi tre comandi inoltrano l’output a /dev/null
che è il “null device” che scarta ogni input a lui indirizzato. Può essere utilizzato per sopprimere ogni output.
Inviare gli output di crontab ad un file di log
Alternativamente, se vogliamo tenere traccia in un file di log di quanto viene eseguito da crontab, possiamo reindirizzare l’output ad un file in questo modo
> /var/log/my.app.log 2>&1
Questo comando sovrascrive sempre lo stesso file, quindi verrà mantenuto solo il risultato dell’ultima esecuzione. Se si vuole avere invece un log che storicizzi tutte le esecuzioni di un task dobbiamo reindirizzare l’output in questo modo
>> /var/log/my.app.log 2>&1
Nel caso si adotti questa opzione, si ricorda che è necessario tenere monitorata l’occupazione della cartella /var/log ed eventualmente impostare un automatismo che ripulisca con una certa frequenza il contenuto dei log file.
Come pulire la casella di posta locale
Nel caso in cui la casella email locale /var/mail/[username]
sia satura di email si può procedere allo svuotamento in questo modo
> /var/mail/[username]
Per esempio, se l’account con cui vengono eseguiti i crontab si chiama alessandro, il comando per svuotare la casella email sarà il seguente
> /var/mail/alessandro
Con questo comando stiamo letteralmente cancellando tutto il contenuto del file reindirizzando l’output di null al file che contiene le email. Come risultato otteniamo un file vuoto.
Come pulire la casella di posta locale usando il comando mail
Una opzione più gentile e che ci permette di eseguire una pulizia selettiva delle email contenute nel file è il comando mail
.
Per usarlo è necessario installare mailutil.
sudo apt install mailutils
mail
.
mail
L’output restituito sarà simile al seguente
"/var/mail/alessandro": 4 messages 4 new
>N 1 Cron Daemon ven ott 7 17:07 39/1511 Cron "$HOME"/scripts/monitoring.sh
N 2 Cron Daemon ven ott 7 17:08 39/1511 Cron "$HOME"/scripts/monitoring.sh
N 3 Cron Daemon ven ott 7 17:09 39/1511 Cron "$HOME"/scripts/monitoring.sh
N 4 Cron Daemon ven ott 7 17:10 39/1511 Cron "$HOME"/scripts/monitoring.sh
?
Per cancellare tutte le email in un solo colpo digitiamo
d *
Per cancellare una singola email digitiamo d seguito dal numero della mail che vogliamo eliminare
d 3