Frage Wie man einen Cronjob Email Betreff ändert


Ich betreibe ein halbes Dutzend verschiedene Cron-Jobs von meinem Hosting bei Hostmonster.com. Wenn ein Cronjob ausgeführt wurde, erhalte ich eine E-Mail mit der Ausgabe des Skripts.

Die E-Mail hat folgendes Format:

Von: Cron-Dämon
Betreff: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Das Problem dabei ist, dass der Betreff der E-Mail es sehr schwer macht zu lesen, zu welchem ​​Cronjob die E-Mail gehört.

Gibt es eine Möglichkeit, den Betreff einer Cronjob-E-Mail so zu ändern, dass sie leichter zu lesen ist?

Zum Beispiel:

Von: Cron-Dämon
Thema: MySQL-Datenbank optimieren

43
2017-08-20 06:58


Ursprung




Antworten:


Auf meinen Systemen (meist Debian) wird die gesamte Ausgabe von einem Skript / Programm, das als Crontab-Eintrag bezeichnet wird, per E-Mail an die account@localhost wer hat den Cron initiiert? Diese E-Mails haben ein Thema wie Ihres.

Wenn Sie eine E-Mail erhalten möchten, schreiben Sie ein Skript, das nicht selbst ausgegeben wird. Aber setze stattdessen alle Ausgaben in eine Textdatei.

Und mit

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

Sie erhalten es so, wie Sie es möchten.


11
2017-08-20 07:35



Danke Michèle. Ich hatte gehofft, Hostmonsters automatisches E-Mail-System zu verwenden, aber es sieht so aus, als wäre dies die Lösung, mit der ich gehe. Anstatt automatische Cron-E-Mails zu erhalten, die von meinem Hosting gesteuert werden, sende ich nur meine eigenen E-Mails. - justinl


Oder benutze den Befehl sh noop (:)

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

Das Thema sieht immer noch klotzig aus, aber es ist zumindest beschreibend und erfordert keine überflüssigen Skripte.


49
2017-10-19 22:08



Das ist ein Hack! (Ich mag das.) - Maxy-B
Beachten Sie, dass das Leerzeichen nach dem Doppelpunkt wichtig ist. - Patrick Forget
Wird der Titel "Queue Summary" lauten? Und ist in diesem Fall der Befehl "qshape"? - Pratik Khadloya
Sieht aus wie qshape ist ein Postfix-Befehl. Mein Unix-Rechner verwendet den Befehl "mail". Aber ist der Befehl qshape hier relevant? - Pratik Khadloya
Das schien ein großartiger Tipp, aber ich kann es einfach nicht zur Arbeit bringen. Der Befehl, der dem Noop-Befehl folgt, wird nie ausgeführt. - oligofren


Verteilen Sie Ihre Cron-Job-Ausgabe direkt an die Mail, und Sie können die Betreffzeile ausfüllen. das 2>&1 Syntax sendet jede Fehlerausgabe, die sonst verschwinden würde.

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

18
2017-08-20 07:50



Ich mache das, aber intern im Skript cron ruft auf, weil ich möchte, dass das Thema den Erfolg oder Misserfolg des ausgeführten Skripts widerspiegelt. - Tom Barron


Übernehmen Sie cronds Verantwortung für das Senden der Befehlsausgabe (oder nicht, wenn es keine gibt), indem Sie output und stderr in 'mailx -E' leiten. Zum Beispiel:

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

Die Option '-E' von Mailx ist nett, weil sie, genau wie crond selbst, keine Mail sendet, wenn keine Ausgabe zu senden ist.


11
2018-04-03 07:53



Was ist die Variable $ LOGNAME hier? - Pratik Khadloya
Gibt es eine Möglichkeit, eine E-Mail nur zu senden, wenn der Exit-Code des Befehls ungleich Null ist? - Pratik Khadloya
@PratikKhadloya, von 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
Es gibt mehrere mailx Implementierungen; nur einige von ihnen bieten dies an -E Möglichkeit. Auf Ubuntu willst du das bsd-mailx oder heirloom-mailx Pakete; das mailutils Paket enthält ein Gnu mailx Befehl mit einem anderen -E. - Smylers


Eine andere Lösung besteht darin, ein Shell-Skript mit der gewünschten Betreffzeile zu schreiben, die den richtigen Befehl aufruft. In Ihrem Beispiel wäre das:

#Optimize_MySQL_Database.sh

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

Sie können Ihr bin-Verzeichnis in den Pfad aufnehmen, indem Sie es in der Crontab-Datei festlegen.


2
2017-12-28 16:43





VERSUCH DIESES - Implementieren Sie in der Befehlszeile den folgenden Code ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Dies ist nur eine Referenz, um Sie zu führen

0
2018-06-27 07:49