J'ai un travail cron exécutant une commande php comme ceci:
php /path/to/script.php > dev/null
Cela ne devrait envoyer que la sortie STDERR à l'adresse MAILTO. D'après ce que je comprends, le script php ne génère aucune information STDERR même lorsque son état de sortie est 1.
Comment puis-je obtenir la sortie de la commande php (STDOUT) et l'envoyer à MAILTO uniquement si l'état de sortie est différent de zéro?
Avez-vous considéré la chronique des moreutils . Je pense qu'il fait exactement ce que vous voulez:
Dans les versions récentes, il y a un
-e
commutateur pour afficher également la sortie complète si quelque chose a été écrit sur stderr.la source
Puisque la sortie est générée avant que l'état de sortie ne soit connu, vous devrez la stocker quelque part.
Une possibilité est de le stocker dans une variable shell:
Cela ne préserve pas complètement la sortie du script (il supprime les lignes vides de fin), mais c'est correct pour ce cas d'utilisation. Si vous souhaitez conserver les lignes vides de fin:
S'il y a potentiellement beaucoup de sortie, vous préférerez peut-être le stocker dans un fichier temporaire à la place:
la source