Як змінити тему електронної пошти Cronjob


49

Я працюю півтора десятка різних робіт з мого хостингу на Hostmonster.com. Коли виконана робота, я отримую електронний лист із вихідним сценарієм.

Електронний лист надходить у форматі:

Від: Крон Демон
Тема: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Проблема в цьому полягає в тому, що тематика електронної пошти дуже важко читає, до якої електронної пошти відноситься повідомлення.

Чи є спосіб змінити тему електронного листа, щоб його було легше читати?

Наприклад:

Від: Крон Демон
Тема: Оптимізація бази даних MySQL

Відповіді:


11

У моїх системах (більшість Debian) весь вихід із сценарію / програми, що називається введенням crontab, надсилається електронною поштою тому, account@localhostхто ініціював cron. Ці електронні листи мають такий предмет, як ваш.

Якщо ви хочете отримати електронний лист, напишіть сценарій, який не має власного виводу. Але замість цього помістіть увесь вихід у текстове файл.

І з

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

ти отримуєш його так, як хочеш.


Дякую Мішель. Я сподівався використати автоматичну систему електронної пошти Hostmonster, але виглядає, що це рішення, з яким я йду. Замість отримання автоматичних електронних листів Cron, які контролюються моїм хостингом, я просто надсилаю власні електронні листи.
Justinl

53

Або скористайтеся командою sh noop (:)

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

Тема все ще виглядає дивовижною, але, принаймні, описовою та не потребує сторонніх сценаріїв.


4
Тепер це хак! (Мені подобається.)
Maxy-B

8
Зауважте, що пробіл є важливим після двокрапки.
Патрік забудь

1
Чи буде заголовок "Підсумок черги"? І чи є команда "qshape" в цьому випадку?
Пратік Хадлоя

Схоже, qshape - це команда postfix. Моя машина Unix використовує команду "пошта". Але чи актуальна тут команда qshape?
Пратік Хадлоя

1
FYI, темою електронної пошти будеQueue Summary; PATH=/usr/sbin qshape
Akom

20

Направляйте свій вихідний завдання на адресу електронної пошти безпосередньо на пошту, і тоді ви можете заповнити тему. 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.
Сміллери

2

Ще одне рішення - написати сценарій оболонки з потрібним рядком теми, який викликає правильну команду. У вашому прикладі це:

#Optimize_MySQL_Database.sh

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

Ви можете включити свій каталог бін у шлях, встановивши його у файлі crontab.


0

Спробуй це - У командному рядку реалізуй наступний код ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Це лише посилання на те, щоб направляти Тебе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.