Jak zmodyfikować temat wiadomości e-mail Cronjob


49

Prowadzę pół tuzina różnych zadań crona z mojego hostingu na Hostmonster.com. Po wykonaniu zadania cronjob otrzymuję wiadomość e-mail z danymi wyjściowymi skryptu.

Wiadomość e-mail ma format:

Od: Cron Daemon
Temat: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Problem polega na tym, że temat wiadomości e-mail sprawia, że ​​bardzo trudno jest odczytać, do kogo odnosi się wiadomość e-mail.

Czy istnieje sposób na zmodyfikowanie tematu wiadomości e-mail o cronjob, aby ułatwić czytanie?

Na przykład:

Od: Cron Daemon
Temat: Zoptymalizuj bazę danych MySQL

Odpowiedzi:


11

W moich systemach (większość Debiana) wszystkie dane wyjściowe ze skryptu / programu wywoływanego jako pozycja crontab są wysyłane pocztą elektroniczną do osoby, account@localhostktóra zainicjowała cron. Te wiadomości e-mail mają podobny temat.

Jeśli chcesz otrzymać wiadomość e-mail, napisz skrypt, który sam nie ma danych wyjściowych. Zamiast tego umieść wszystkie dane wyjściowe w pliku tekstowym.

I z

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

otrzymujesz to tak, jak chcesz.


Dzięki Michèle. Miałem nadzieję, że skorzystam z automatycznego systemu poczty e-mail firmy Hostmonster, ale wygląda na to, że będzie to rozwiązanie, z którym korzystam. Zamiast odbierać e-maile Automatic Cron kontrolowane przez mój hosting, po prostu wysyłam własne e-maile.
justinl

53

Lub użyj polecenia sh noop (:)

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

Temat wciąż wygląda kludgey, ale przynajmniej jest opisowy i nie wymaga żadnych dodatkowych skryptów.


4
To jest hack! (Podoba mi się.)
Maxy-B

8
Zauważ, że spacja jest ważna po dwukropku.
Patrick Forget

1
Czy tytuł będzie brzmiał „Podsumowanie kolejki”? I czy w tym przypadku polecenie „qshape”?
Pratik Khadloya

Wygląda na to, że qshape jest poleceniem postfiksowym. Mój komputer z systemem UNIX używa polecenia „mail”. Ale czy polecenie qshape jest tutaj istotne?
Pratik Khadloya

1
Do wiadomości, temat wiadomości e-mail będzieQueue Summary; PATH=/usr/sbin qshape
Akom

20

Prześlij dane wyjściowe zadania cron bezpośrednio do poczty, a następnie możesz wypełnić wiersz tematu. 2>&1składnia wysyła żadnego wyjścia błędów, które znikają inaczej.

mycmd 2>&1 | mail -s "mycmd output" myname

2
Robię to, ale wewnętrznie w wywołaniach skryptu cron, ponieważ chcę, aby temat odzwierciedlał powodzenie lub niepowodzenie uruchamiania skryptu.
Tom Barron,

13

Przejmij odpowiedzialność cronda za wysyłanie danych wyjściowych poleceń (lub nie, jeśli ich nie ma), przesyłając dane wyjściowe i stderr do 'mailx -E'. Na przykład:

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

Opcja „-E” Mailxa jest dobra, ponieważ, podobnie jak sama crond, nie wysyła wiadomości, jeśli nie ma żadnych danych wyjściowych do wysłania.


1
Co to jest tutaj zmienna $ LOGNAME?
Pratik Khadloya

Czy istnieje sposób wysłania wiadomości e-mail tylko wtedy, gdy kod wyjścia polecenia jest różny od zera?
Pratik Khadloya

1
@PratikKhadloya, from 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
Istnieje wiele mailximplementacji; tylko niektóre z nich oferują tę -Eopcję. Na Ubuntu chcesz pakiety bsd-mailxlub heirloom-mailx; mailutilspakiet zawiera GNU mailxpolecenia z innym -E.
Smylers

2

Innym rozwiązaniem jest napisanie skryptu powłoki z żądanym wierszem tematu, który wywołuje właściwe polecenie. W twoim przykładzie byłoby to:

#Optimize_MySQL_Database.sh

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

Możesz dołączyć katalog bin do ścieżki, ustawiając go w pliku crontab.


0

SPRÓBUJ TO - W wierszu polecenia wprowadź następujący kod ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • To tylko odniesienie do prowadzenia Cię
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.