На моем хостинге на Hostmonster.com я выполняю полдюжины разных заданий cron. После выполнения cronjob я получаю письмо с выводом скрипта.
Письмо приходит в формате:
От: Cron Daemon Тема: Cron/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
Проблема в том, что тема письма очень затрудняет чтение того, к какому кронжу относится письмо.
Есть ли способ изменить тему письма cronjob, чтобы его было легче читать?
Например:
От: Cron Daemon Тема: Оптимизация базы данных MySQL
В моих системах (большинство Debian) все выходные данные из скрипта/программы, называемой crontab-записью, отправляются по электронной почте на [email protected]
кто инициировал cron. Эти электронные письма имеют такую же тему, как ваша.
Если вы хотите получить электронное письмо, напишите скрипт, который не имеет выходных данных сам по себе. Но вместо этого поместите весь вывод в текстовый файл.
И с
mail -s 'your subject' [email protected] < textfile
вы получаете это так, как вы хотите.
Или используйте команду 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
Опция '-E' в Mailx хороша, потому что, как и сам crond, он не будет отправлять почту, если нет вывода для отправки.
Другое решение - написать сценарий оболочки с нужной вам строкой темы, которая вызывает правильную команду. В вашем примере это будет:
#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*" [email protected]**