Я выполняю полдюжины различных заданий cron с моего хостинга Hostmonster.com. Когда задание cron выполнено, я получаю электронное письмо с результатами работы скрипта.
Электронное письмо имеет следующий формат:
From: Cron Daemon Subject: Cron /ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
Проблема в том, что из-за темы письма очень трудно понять, к какому заданию cron относится письмо.
Есть ли способ изменить тему электронного письма cronjob, чтобы его было легче читать?
Например:
From: Cron Daemon Subject: Optimize MySQL Database
Или используйте команду sh noop (:)
0 9-17 * * 1-5 : Queue Summary; PATH=/usr/sbin qshape
Тема все еще выглядит беспорядочно, но, по крайней мере, она описательна и не требует посторонних скриптов.
Отправьте вывод задания cron на почту напрямую, а затем вы можете заполнить строку темы. в 2>&1
синтаксис отправляет все сообщения об ошибках, которые в противном случае исчезли бы.
mycmd 2>&1 | mail -s "mycmd output" myname
Возьмите на себя ответственность crond за отправку вывода команды (или нет, если таковой нет), передав вывод и stderr по конвейеру в mailx -E. Например:
0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME
Параметр Mailx '-E' удобен тем, что, как и сам crond, он не будет отправлять почту, если нет вывода для отправки.
В моих системах (в большинстве Debian) весь вывод из сценария / программы, называемой crontab-entry, отправляется по электронной почте на адрес account@localhost
кто инициировал cron. Эти письма имеют такую же тему, как и ваша.
Если вы хотите получать электронное письмо, напишите сценарий, который сам по себе не выводит сообщения. Но вместо этого поместите весь вывод в текстовый файл.
И с
mail -s 'your subject' adress@where < textfile
вы получаете то, что хотите.
Другое решение - написать сценарий оболочки с нужной строкой темы, вызывающей нужную команду. В вашем примере это будет:
#Optimize_MySQL_Database.sh
/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
Вы можете включить каталог bin в путь, указав его в файле crontab.
ПОПРОБУЙТЕ - В командной строке реализуйте следующий код ---
/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
| **mail -s "*SUBJECT*" YOUR@MAIL.COM.**