Uzun yıllardır başarıyla kullandığım bir başka varyasyon - çıktıyı yakalamak ve yalnızca bir hatayla yazdırmak , bir e-postayı tetiklemek. Bu, geçici dosyalar gerektirmez ve tüm çıktıları korur . Önemli 2>&1
olan STDERR'i STDOUT'a yönlendiren kısımdır .
Çıktının tamamını varsayılan cron mailer config ile gönderin:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"
Aynı ancak belirli bir adres ve konuyla:
(Adres , tüm crontab dosyası için MAILTO = xxxx ayarlanarak da değiştirilebilir )
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address
Hata durumunda birden fazla işlem gerçekleştirebilir ve e-postaya ekleyebilirsiniz:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || {echo "$OUTPUT" ; ls -ltr /backup/dir ; }
Bu basit komutlar için işe yarayacaktır. Eğer karmaşık borular ( find / -type f | grep -v bla | tar something-or-other
) ile uğraşıyorsanız , komutu bir betiğe taşımanız ve bahsi geçen yaklaşımı kullanarak betiği çalıştırmanız daha iyi olacaktır. Bunun nedeni, borunun herhangi bir kısmının STDERR'ye çıkış yapması durumunda, hala e-posta alacak olmanızdır.