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.