Rediriger les sorties du terminal pour ne pas recevoir les mails du cron

Trou noirEn dehors des documentations officielles, il y a bien peu d’articles qui traitent des redirections comme l’incontournable «> /dev/null 2>&1».

Mais c’est quoi «> /dev/null 2>&1» ?

> /dev/null : permet d’envoyer la sortie dite standard (STDOUT) dans le « null », c’est-à-dire la jeter dans une sorte de trou noir… :-)
2>&1 : on redirige 2 (STDERR) vers 1 (STDOUT), ainsi on renvoi l’erreur standard vers la sortie standard.

La commande > /dev/null 2>&1 détruit donc l’ensemble des sorties. L’intérêt est limité, sauf dans le cas d’une tâche cron récurrente.

En effet, lorsque l’on reçoit les mails du cron, il est courant de se retrouver inondé de notifications pour certains scripts.
Exemple : dans le cas d’un wget ou d’un curl qui appellent un script (l’updater d’RSSlounge par exemple).

Donc :

commande > /dev/null 2>&1

Si vous désirez supprimer la sortie standard (STDOUT) en conservant l’erreur standard (STDERR), (attention, les erreurs de certains scripts sont considérées comme des sorties standards) :

commande 1> /dev/null

Si néanmoins vous préférez transférer la sortie vers un fichier (attention à surveiller la taille du fichier) :

commande > /log/log.txt

Une dernière solution consiste à demander à crontab de ne pas envoyer de mail. Deux solutions pour éditer le crontab :

 nano /etc/crontab

Ou :

crontab -e

Il suffit ensuite d’insérer la commande suivante juste avant la liste des tâches :

MAILTO=""

Cette dernière solution s’applique à l’ensemble des taches planifiées.

Pour conclure, il existe différentes solutions, à vous de voir celle qui vous convient le mieux. Dans tous les cas, faites bien attention à ne pas perdre les retours d’infos importants. Ce serait dommage de ne pas avoir le retour d’erreur d’une tâche de sauvegarde qui ne s’exécute plus depuis quelques mois…

Edit : info utile pour les malheureux qui tombent ici en cherchant à faire l’inverse de ce que je propose : par défaut, CRON envoi un e-mail pour chaque commande qui renverrait des informations dans le terminal, a condition bien sûr, qu’un serveur de mail comme postfix soit installé… 😉

Partager :

Flattr !

2 réflexions au sujet de « Rediriger les sorties du terminal pour ne pas recevoir les mails du cron »

  1. Les gens qui suivent des tutos sans comprendre ce qu’ils font réellement ?
    Les gens qui savent à quoi sert cron sans en connaitre les subtilités ?
    Et personnellement je n’ai jamais trouvé le > /dev/null 2>&1 particulièrement évident à comprendre au premier abord.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *