Это выглядит просто, но как я могу перенаправить вывод такого типа crontab на мою электронную почту?
00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1
Я пытался добавить MAILTO=myemail@email.com, но безрезультатно.
С уважением
Запись cron, которая у вас есть, перенаправляет оба STDOUT
и STDERR
в файл: /var/log/CRONLOGS/testing_prod.log
.
Самый простой способ сделать то, что вы хотите, - запустить mailx
в конце задания cron, используя косвенную ссылку для отправки этого файла:
00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1; mailx -s "Cron output" me@example.org < /var/log/CRONLOGS/testing_prod.log
тем не мение: обратите внимание, что ваша работа cron добавление в файл журнала, поэтому, если он регулярно не очищается от старых записей (или не меняется), вы получите весь предыдущий вывод, а также новый вывод. Вероятно, было бы лучше создать небольшой сценарий оболочки для записи во временный журнал, отправить его по почте, а затем добавить в журнал почты:
#!/bin/sh
/usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /tmp/testing_prod$$.log 2>&1
mailx -s "Cron output" me@example.org < /tmp/testing_prod$$.log
cat /tmp/testing_prod$$.log >> /var/log/CRONLOGS/testing_prod.log
rm /tmp/testing_prod$$.log
Это дает возможность crontab
выглядят аккуратнее:
00 06 * * * /home/user/myapp/cronscript.sh