Ich habe einen Cron-Job, der einen PHP-Befehl wie diesen ausführt:
php /path/to/script.php > dev/null
Dies sollte nur die STDERR-Ausgabe an die MAILTO-Adresse senden. Soweit ich weiß, gibt das PHP-Skript keine STDERR-Informationen aus, selbst wenn der Exit-Status 1 ist.
Wie kann ich die Ausgabe des PHP-Befehls (STDOUT) abrufen und nur an MAILTO senden, wenn der Exit-Status ungleich Null ist?
Haben Sie chronisch von moreutils betrachtet . Ich denke, es macht genau das, was Sie wollen:
In den letzten Überprüfungen gibt es einen
-e
Schalter, der auch die vollständige Ausgabe anzeigt, wenn etwas in stderr geschrieben wurde.quelle
Da die Ausgabe generiert wird, bevor der Exit-Status bekannt ist, müssen Sie sie irgendwo speichern.
Eine Möglichkeit besteht darin, es in einer Shell-Variablen zu speichern:
Dadurch wird die Ausgabe des Skripts nicht vollständig beibehalten (nachgestellte Leerzeilen werden entfernt), aber für diesen Anwendungsfall ist dies in Ordnung. Wenn Sie nachgestellte Leerzeilen beibehalten möchten:
Wenn möglicherweise viel ausgegeben wird, möchten Sie diese möglicherweise lieber in einer temporären Datei speichern:
quelle