Mam kilka crona, które działają (w /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.weekly
, itd.) Oraz e-mail root@localhost
z wynikami. Chciałbym zatrzymać te e-maile, jeśli zadania się powiodą, i tylko e-mail z błędem (rozumiem, że można to zrobić przez przekierowanie stdout
do /dev/null
). Rozumiem, jak to zrobić dla poszczególnych zadań cron, ale skrypty w tych specjalnych katalogach są uruchamiane przy użyciu run-parts
. Jaki jest najlepszy sposób na powstrzymanie wiadomości e-mail o sukcesie dla tych skryptów?
8
cron.XXX
katalogów, które używająrun-parts
, więc nie jest to tak proste, jak przekierowanie dla poszczególnych skryptów.stderr
jest wyrzucany, a następniestderr
przekierowywany dostdout
. Nie jestem pewien, co torun-parts
jest, ale jednak działa przekierowanie,stdout
a następniestderr
wydaje się być drogą.run-parts
. To komplikuje problem, prawda? Może powinieneś unikaćrun-parts
i wywoływać każdy skrypt osobno.run-parts
uruchamia wszystkie skrypty w katalogach takich jak/etc/cron.daily
, więc sztuczka polega na przekierowaniu do poszczególnych uruchomionych skryptów.>/dev/null 2>&1
? Przetestowałem to i to wszystko prowadzi do tego/dev/null
, że jeśli upuścisz,2>&1
jedyne stdout zostanie usunięte.STDOUT
przypadku powodzenia iSTDERR
w przypadku wystąpienia błędu.STDOUT
lubSTDERR
( Arch wiki ).Jeśli więc chcesz zachować powiadomienia o błędach, nie przekierowuj
STDERR
, po prostuSTDOUT
:Jeśli robisz to typowo
>/dev/null 2>&1
, skutecznie eliminujesz oba ( dokumentacja bash ).stdin
deskryptor pliku kopią / dev / null.stderr
deskryptor pliku w kopięstdout
(która już wskazywała na / dev / null).źródło