Impedisci a cron di inviarmi un'e-mail


10

Come posso impedire a cron di inviarmi via e-mail i risultati dei lavori che pianifico?

Risposte:


15

Impostando la variabile di ambiente "MAILTO" su ""

Qualcosa come:

SHELL=/bin/bash
MAILTO=



01 * * * *  /your/path/to/script/here.sh

12

Se vuoi che un singolo lavoro interrompa la posta elettronica, aggiungi semplicemente> / dev / null 2> & 1

Per esempio:

0 * * * * /home/script >/dev/null 2>&1

1
Se sei sicuro che una corsa finirà prima dell'avvio successivo, può valere la pena reindirizzare l'output su un file denominato piuttosto che su / dev / null: questo dà la possibilità di controllare cosa è successo all'ultima corsa se sospetti un problema.
Mas,

4

Cron ti invia un'e-mail solo se c'è output, su stdouto stderr.

Se è lo script che hai scritto, rendilo meno dettagliato - rimuovi inutili echoo printdichiarazioni. Il reindirizzamento stdouta /dev/nullè anche una soluzione valida:

2 * * * * /my/script > /dev/null

Se ricevi ancora messaggi dopo averlo fatto, l'output è attivo stderr, quindi dovrebbe essere un errore, che dovresti risolvere .. In caso contrario, puoi reindirizzare stderra /dev/nullcon ..

2 * * * * /my/script > /dev/null 2> /dev/null

.. anche se ignorare i messaggi di errore è generalmente una cattiva idea! (Come fai a sapere quando il cron job è rotto?)

È possibile reindirizzare l'output di un comando specifico da stderr a stdout utilizzando 2>&1, ad esempio:

command_which_prints_messages_to_stderr 2>&1 # redirect stderr to stdout

..quindi direttamente stdouta /dev/nullnel vostro lavoro cron - in questo modo si tacere i comandi a voce alta, senza perdere i messaggi di errore

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.