Saya memiliki tugas cron yang menjalankan perintah php seperti ini:
php /path/to/script.php > dev/null
Ini harus mengirim hanya output STDERR ke alamat MAILTO. Dari apa yang saya kumpulkan skrip php tidak menghasilkan informasi STDERR bahkan ketika status keluarnya adalah 1.
Bagaimana saya bisa mendapatkan output dari perintah php (STDOUT) dan hanya mengirimkannya ke MAILTO jika status keluarnya bukan nol?
Apakah Anda dianggap kronis dari moreutils . Saya pikir itu tepat seperti yang Anda inginkan:
Dalam verifikasi baru-baru ini, ada
-e
saklar untuk juga menunjukkan hasil lengkap jika ada sesuatu yang ditulis ke stderr.sumber
Karena output dihasilkan sebelum status keluar diketahui, Anda harus menyimpannya di suatu tempat.
Satu kemungkinan adalah menyimpannya dalam variabel shell:
Ini tidak sepenuhnya mempertahankan output skrip (ini menghilangkan garis-garis kosong yang tertinggal), tapi itu tidak masalah untuk kasus penggunaan ini. Jika Anda ingin mempertahankan trailing baris kosong:
Jika ada potensi banyak output, Anda mungkin lebih suka menyimpannya dalam file sementara:
sumber