Saya punya beberapa pekerjaan cron yang berjalan (di /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.weekly
, dll) dan email root@localhost
dengan hasil. Saya ingin menghentikan email-email itu jika pekerjaannya berhasil, dan hanya email yang salah (yang saya pahami dapat dilakukan dengan mengarahkan ulang stdout
ke /dev/null
). Saya mengerti bagaimana melakukan itu untuk pekerjaan cron individu, tetapi skrip di direktori khusus tersebut dijalankan menggunakan run-parts
. Apa cara terbaik untuk menekan email yang berhasil untuk skrip tersebut?
8
cron.XXX
direktori saya yang digunakanrun-parts
, jadi tidak sesederhana mengarahkan ulang untuk masing-masing skrip.stderr
dibuang kemudianstderr
diarahkan kestdout
. Saya tidak yakin aparun-parts
itu, tetapi bagaimanapun itu berfungsi pengalihanstdout
dan kemudianstderr
tampaknya menjadi jalannya.run-parts
. Itu menyulitkan masalah, bukan. Mungkin Anda harus menghindarirun-parts
dan memanggil setiap skrip secara terpisah.run-parts
menjalankan semua skrip dalam direktori seperti/etc/cron.daily
, jadi triknya adalah meneruskan pengalihan ke skrip individual yang sedang dijalankan.>/dev/null 2>&1
bit? Saya mengujinya dan itu menyalurkan semuanya/dev/null
, di mana jika Anda menjatuhkan2>&1
stdout saja dihapus.STDOUT
jika berhasil, danSTDERR
jika ada kesalahan.STDOUT
atauSTDERR
( Arch wiki ).Jadi, jika Anda ingin menyimpan pemberitahuan kesalahan, jangan redirect
STDERR
, cukupSTDOUT
:Jika Anda melakukan tipikal
>/dev/null 2>&1
, Anda secara efektif menekan keduanya ( dokumentasi bash ).stdin
file descriptor salinan / dev / null.stderr
file descriptor salinanstdout
(yang sudah menunjuk ke / dev / null).sumber