Disabilitare invio e-mail di cron

Dopo questo articolo (cioè dopo aver installato un servizio per l'invio delle mail da terminale) il PC ha cominciato a parlarmi troppo...
Messaggi di errore da parte di cron (ossia il demone responsabile delle operazioni pianificate) mi arrivavano quasi in continuazione, perciò ecco come disabilitare l'invio delle notifiche.
Ci sono diversi metodi, a seconda del numero di operazioni pianificate che si hanno o a seconda di come si vuole procedere.

Un metodo per disabilitarle tutte contemporaneamente è quello di configurare crontab, ossia il programma che fornisce le informazioni al demone cron.
Ogni utente ha il suo crontab e si può modificare lanciando da terminale questo comando:

crontab -e


Si aprirà il file di configurazione di crontab, a questo punto basta inserire all'inizio del file la sintassi:

MAILTO=""


ed il gioco è fatto!
Ovviamente SALVARE (CTRL-O) ed USCIRE (CTRL-X) dopo aver inserito il comando!

Per vedere se le modifiche sono state apportate correttamente si può visualizzare il listato di crontab con il comando

crontab -l


Finisce qui il primo metodo, il più semplice e per i pigri come me!

Altre opzioni per crontab possono essere:

crontab -r  :  Elimina il proprio file crontab.
crontab -v  :  Utilizzabile solo in alcuni sistemi, indica la data dell'ultima modifica.
crontab -u nome-utente  :  Con altre opzioni indica di usare il crontab dell'utente specificato.

 

In alternativa alla prima soluzione, possiamo effettuare un redirect di STDERR e/o STDOUT (ossia degli errori e/o dello standard output).
Per fare ciò, però, bisogna modificare singolarmente ogni comando che definisce un'operazione pianificata ed aggiungere alla fine il redirect.

Per aggiungere il redirect dell'output, qualora ce ne dovesse essere:

>/dev/null


Per aggiungere il redirect degli errori:

2>/dev/null


Per aggiungere il redirect totale:

>/dev/null 2>&1

oppure

&>/dev/null

 



APPROFONDIMENTO  CRONTAB

I cosiddetti "Cron Job", ossia le operazioni pianificate, vengono utilizzati per pianificare comandi da eseguire periodicamente.
Il servizio cron è un demone, quindi viene eseguito in background e controlla costantemente il file /etc/crontab e le directory /etc/cron.* e /var/spool/cron/

crontab invece, come dice il manuale, è il comando utilizzato per installare, disinstallare o elencare le tabelle (ossia i file di configurazione di cron) utilizzati per guidare il demone cron. Ogni utente può avere il proprio file crontab e anche se questi sono i file in /var/spool/cron/crontab, non sono destinati ad essere modificati direttamente. E' necessario utilizzare il comando "crontab -e" per la modifica o la creazione di una proria cron jobs.

La sintassi da usare è la seguente:

1 2 3 4 5 /percorso/al/comando argomento1 argomento2

oppure

1 2 3 4 5 /root/backup.sh


dove:

1 : Minuto (0-59)
2 : Ora (0-23)
3 : Giorno del mese (0-31)
4 : Mese (0-12) [12 == Dicembre]
5 : Giorno della Settimana (0-7) [7 o 0 == domenica]
/percorso/al/comando : Indica il percorso dello script o comando da eseguire

Al posto dei primi cinque campi, sono ammesse anche dei valori speciali:

@reboot       :   Esegue una vola all'avvio
@yearly        :   Esegue una volta l'anno, "0 0 1 1 *"
@annually   :   Lo stesso di @yearly
@monthly     :  Esegue una volta al mese, "0 0 1 * *"
@weekly       :  Esegue una volta alal settimana, "0 0 * * 0"
@daily           :  Esegue una volta al giorno, "0 0 * * *"
@midnight    :  Lo stesso di @daily
@hourly        :  Esegue una volta ogni ora, "0 * * * *"

Se sia "Giorno del Mese" (campo 3) che "Giorno della Settimana" (campo 5) sono presenti sulla stessa linea, il comando viene eseguito quando almeno uno dei due è vero. Ossia vengono eseguiti con un OR.

Per gli script di sistema sarà presente anche il nome utente in questo modo:

1 2 3 4 5 nome-utente /percorso/al/comando argomento1 argomento2

Sono ammessi anche valori multipli per Minuti, Ore ecc... ad esempio:

* : ASTERISCO. Questo operatore indica tutti i valori possibili per un campo. Ad esempio, un asterisco nel campo "ora" sarebbe equivalente a ogni ora, oppure un asterisco nel campo "mese" sarebbe equivalente ad ogni mese e così via.
:  VIRGOLA. La virgola indica una lista. Ad esempio "2,4,10,42" indica valido ognuno di questi valori.
-  :  TRATTINO.  Questo operatore indica un intervallo. Ad esempio "2-10" significa "da 2 a 10".
/  :  SLASH. Questo operatore indica un incremento. Ad esempio: "0-23/" può essere utilizzato nel campo ore per specificare l'esecuzione comando ogni altra ora. I passaggi sono ammessi anche dopo un asterisco, quindi se si vuole indicare ogni due ore, basta usare "*/2". Oppure, "3-59/15" nel campo "minuti", indica il terzo minuto dell'ora, ogni 15 minuti.

Esistono poi dei valori non standard ammessi solo in alcune implementazioni di cron, nei campi "Giorno del Mese" e "Giorno della Settimana", e sono i seguenti: L, W, #, ?. Per un loro approfondimento può essere utile questa pagina di Wikipedia.