Как изменить тему электронной почты Cronjob

50

На моем хостинге на Hostmonster.com я выполняю полдюжины разных заданий cron. После выполнения cronjob я получаю письмо с выводом скрипта.

Письмо приходит в формате:

От: Cron Daemon
Тема: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Проблема в том, что тема письма очень затрудняет чтение того, к какому кронжу относится письмо.

Есть ли способ изменить тему письма cronjob, чтобы его было легче читать?

Например:

От: Cron Daemon
Тема: Оптимизация базы данных MySQL
justinl
источник

Ответы:

11

В моих системах (большинство Debian) все выходные данные из скрипта / программы, называемой crontab-записью, отправляются по электронной почте тому, account@localhostкто инициировал cron. Эти электронные письма имеют такую ​​же тему, как ваша.

Если вы хотите получить электронное письмо, напишите скрипт, который не имеет выходных данных сам по себе. Но вместо этого поместите весь вывод в текстовый файл.

И с

mail -s 'your subject' adress@where < textfile

вы получаете это так, как вы хотите.

Michèle
источник
Спасибо, Мишель. Я надеялся использовать автоматическую систему электронной почты Hostmonster, но похоже, что это будет решением, с которым я пойду. Вместо того, чтобы получать автоматические электронные письма Cron, контролируемые моим хостингом, я просто отправлю свои собственные электронные письма.
Джастин
54

Или используйте команду sh noop (:)

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape

Тема все еще выглядит грязной, но, по крайней мере, она носит описательный характер и не требует посторонних сценариев.


источник
4
Теперь это взломать! (Мне это нравится.)
Maxy-B
8
Обратите внимание, что пробел важен после двоеточия.
Патрик Забудь
1
Будет ли заголовок «Сводка очереди»? И является ли команда "qshape" в этом случае?
Пратик Хадлоя
Похоже, qshape это постфиксная команда. Моя машина с Unix использует команду «mail». Но уместна ли здесь команда qshape?
Пратик Хадлоя
2
К вашему сведению, тема письма будетQueue Summary; PATH=/usr/sbin qshape
Аком
21

Направьте вывод своей работы cron на почту напрямую, и тогда вы можете заполнить строку темы. 2>&1синтаксис посылает все сообщения об ошибках , которые в противном случае исчезнут бы.

mycmd 2>&1 | mail -s "mycmd output" myname
Марк Харрисон
источник
2
Я делаю это, но для внутренних вызовов скрипта cron, потому что я хочу, чтобы тема отражала успех или неудачу запуска скрипта.
Том Баррон
13

Возьмите на себя ответственность crond за отправку выходных данных команды (или нет, если их нет), отправив выходные данные и stderr в 'mailx -E'. Например:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME

Опция '-E' в Mailx хороша тем, что, как и сам crond, она не будет отправлять почту, если нет вывода для отправки.

Алексис Хаксли
источник
1
Что такое переменная $ LOGNAME здесь?
Пратик Хадлоя
Есть ли способ отправить электронное письмо только в том случае, если код выхода команды не равен нулю?
Пратик Хадлоя
1
@PratikKhadloya, из crontab (5): Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab; LOGNAME is the user that the job is running from, and may not be changed.
lingfish
2
Есть несколько mailxреализаций; только некоторые из них предлагают эту -Eопцию. В Ubuntu вам нужны пакеты bsd-mailxили heirloom-mailx; mailutilsпакет содержит Gnu mailxкоманду с другим -E.
Smylers
2

Другое решение - написать сценарий оболочки с нужной вам строкой темы, которая вызывает правильную команду. В вашем примере это будет:

#Optimize_MySQL_Database.sh

/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

Вы можете включить каталог bin в путь, установив его в файле crontab.

EEAA
источник
0

ПОПРОБУЙТЕ ЭТО - В командной строке внедрите следующий код ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Это просто ссылка, чтобы вести вас
sudhu
источник