Éviter de recevoir des emails lors de l'exécution des tâches cron

Cron est un outil pratique et même essentiel des systèmes de type Unix. C'est un démon qui exécute des commandes à un temps donné ou selon une fréquence donnée.

Le soucis c'est que cron (sur Debian au moins) considère que toute sortie produite par une des commandes est une erreur, et donc mitraille d'emails quand un programme n'est pas silencieux.

La solution c'est alors de rediriger STDOUT et STDERR vers /dev/null dans la commande. Le piège à con (parce qu'il y en a un), c'est de se rappeler que ce n'est pas bash qui exécute lesdites commandes, et que donc la version qui suit ne marche pas:

echo "prout" &> /dev/null

le &> est un raccourci made in GNU pour la commande qui suit, et qui elle fonctionne:

echo "prout" > /dev/null 2>&1

Pour les curieux, ici on redirige la sortie standard (STDOUT) vers le fichier /dev/null (trou noir à données), et comme on veut se débarrasser de STDERR aussi, on le redirige vers STDOUT. Le flux STDERR est 2 pour Bash et ses copains, et STDOUT est 1, donc on route 2 vers 1, ou 2>&1.

Vus : 849
Publié par Etenil : 58