Vraag Hoe een Cronjob e-mail onderwerp te wijzigen


Ik run een half dozijn verschillende cron-taken vanuit mijn hosting op Hostmonster.com. Wanneer een cronjob is uitgevoerd, ontvang ik een e-mail met de uitvoer van het script.

De e-mail heeft de volgende vorm:

Van: Cron Daemon
Onderwerp: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Het probleem hiermee is dat het onderwerp van de e-mail het heel moeilijk maakt om te lezen naar welke cronjob de e-mail betrekking heeft.

Is er een manier om het onderwerp van een cronjob-e-mail aan te passen zodat het gemakkelijker te lezen is?

Bijvoorbeeld:

Van: Cron Daemon
Onderwerp: MySQL-database optimaliseren

43
2017-08-20 06:58


oorsprong




antwoorden:


Op mijn systemen (de meeste Debian) wordt alle uitvoer, vanuit een script / programma met de naam crontab-entry, per e-mail naar de account@localhost wie de cron heeft ingewijd. Deze e-mails hebben een onderwerp als het uwe.

Als u een e-mail wilt ontvangen, schrijft u een script dat zelf geen uitvoer heeft. In plaats daarvan zet u alle uitvoer in een tekstbestand.

En met

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

je ontvangt het zoals je wilt.


11
2017-08-20 07:35



Bedankt Michèle. Ik hoopte het automatische e-mailsysteem van Hostmonster te gebruiken, maar het ziet ernaar uit dat dit de oplossing zal zijn waarmee ik ga werken. In plaats van het ontvangen van Automatic Cron e-mails gecontroleerd door mijn hosting, stuur ik gewoon mijn eigen e-mails. - justinl


Of gebruik de sh noop-opdracht (:)

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

Het onderwerp ziet er nog steeds kludgey uit, maar het is in elk geval beschrijvend en vereist geen externe scripts.


49
2017-10-19 22:08



Dat is een hack! (Ik vind het leuk.) - Maxy-B
Merk op dat de spatie belangrijk is na de dubbele punt. - Patrick Forget
Wordt de titel "Wachtrijgegevensoverzicht"? En is in dit geval het commando "qshape"? - Pratik Khadloya
Het lijkt erop dat qshape een postfix-opdracht is. Mijn Unix-machine gebruikt de opdracht "mail". Maar is het qshape-commando hier relevant? - Pratik Khadloya
Dit leek een goede tip, maar ik kan het gewoon niet laten werken. Het commando dat volgt op de opdracht noop wordt nooit uitgevoerd. - oligofren


Buig uw cron-taakuitvoer rechtstreeks naar e-mail en vervolgens kunt u de onderwerpregel invullen. de 2>&1 syntaxis verzendt elke foutuitvoer die anders zou verdwijnen.

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

18
2017-08-20 07:50



Ik doe dit, maar intern aan het script dat cron aanroept omdat ik wil dat het onderwerp het succes of de mislukking weerspiegelt van het script dat wordt uitgevoerd. - Tom Barron


Neem de verantwoordelijkheid van crond over voor het verzenden van opdrachtuitvoer (of niet als dit niet het geval is) door uitvoer en stderr in 'mailx -E' te pipen. Bijvoorbeeld:

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

De '-E' optie van Mailx is leuk omdat het, net als crond zelf, geen e-mail zal verzenden als er geen uitvoer is om te verzenden.


11
2018-04-03 07:53



Wat is de $ LOGNAME-variabele hier? - Pratik Khadloya
Is er een manier om alleen te e-mailen wanneer de exit-code van de opdracht niet gelijk is aan nul? - Pratik Khadloya
@PratikKhadloya, van 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
Er zijn meerdere mailx implementaties; slechts enkele bieden dit -E keuze. Op Ubuntu wil je de bsd-mailx of heirloom-mailx pakketjes; de mailutils pakket bevat een GNU mailx commando met een ander -E. - Smylers


Een andere oplossing is om een ​​shellscript te schrijven met de onderwerpregel die u wilt, de juiste opdracht. In uw voorbeeld zou dit zijn:

#Optimize_MySQL_Database.sh

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

U kunt uw bin-map opnemen in het pad door deze in het crontab-bestand in te stellen.


2
2017-12-28 16:43





PROBEER DIT - Voer in de opdrachtregel de volgende code uit ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Dit is slechts een verwijzing om u te begeleiden

0
2018-06-27 07:49