นี่คือรูปแบบอื่นที่ผมเคยใช้ประสบความสำเร็จมานานหลายปี - ส่งออกการจับภาพและพิมพ์ออกมาเฉพาะในข้อผิดพลาด นี้ไม่จำเป็นต้องไฟล์ temp และเก็บรักษาผลผลิตทั้งหมด ส่วนที่สำคัญคือการ2>&1
เปลี่ยนเส้นทาง STDERR ไปยัง STDOUT
ส่งเอาต์พุตทั้งหมดผ่านการกำหนดค่า cron mailer ที่เป็นค่าเริ่มต้น:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"
เหมือนกัน แต่มีที่อยู่เฉพาะและหัวเรื่อง:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address
คุณสามารถดำเนินการหลายอย่างพร้อมกันเมื่อเกิดข้อผิดพลาดและเพิ่มไปยังอีเมล:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || {echo "$OUTPUT" ; ls -ltr /backup/dir ; }
สิ่งนี้จะทำงานกับคำสั่งง่าย ๆ หากคุณกำลังจัดการกับ pipes ที่ซับซ้อน ( find / -type f | grep -v bla | tar something-or-other
) คุณควรย้ายคำสั่งไปยังสคริปต์และเรียกใช้สคริปต์โดยใช้วิธีการดังกล่าวข้างต้น เหตุผลก็คือถ้าส่วนใดส่วนหนึ่งของไพพ์ส่งออกไปยัง STDERR คุณจะยังคงได้รับอีเมล