Ось ще один варіант, який я успішно використовую протягом багатьох років - захоплюйте висновок та друкуйте його лише помилково , запускаючи електронний лист. Для цього не потрібні тимчасові файли, і зберігається весь вихід . Важлива частина - це 2>&1
те, що перенаправляє STDERR до STDOUT.
Надішліть весь вихід через конфігурацію електронної пошти за замовчуванням:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"
Те саме, але з конкретною адресою та темою:
(адресу можна також змінити, встановивши MAILTO = xxxx для всього файлу crontab)
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 ; }
Це буде працювати для простих команд. Якщо ви маєте справу зі складними трубами ( find / -type f | grep -v bla | tar something-or-other
), то вам краще перемістити команду в скрипт і запустити скрипт , використовуючи вищезгаданий підхід. Причина полягає в тому, що якщо будь-яка частина труби виводиться на STDERR, ви все одно отримаєте електронні листи.