Come modificare un oggetto e-mail Cronjob


49

Sto eseguendo una mezza dozzina di lavori cron diversi dal mio hosting su Hostmonster.com. Quando è stato eseguito un cronjob, ricevo un'email con l'output dello script.

L'email è disponibile nel formato di:

Da: Cron Daemon
Oggetto: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

Il problema è che l'oggetto dell'email rende molto difficile leggere a quale cronjob appartiene l'e-mail.

C'è un modo per modificare l'oggetto di un'e-mail cronjob in modo che sia più facile da leggere?

Per esempio:

Da: Cron Daemon
Oggetto: Ottimizza il database MySQL

Risposte:


11

Sui miei sistemi (la maggior parte di Debian) tutto l'output, da uno script / programma chiamato come voce crontab, viene inviato via e-mail a account@localhostchi ha avviato il cron. Queste e-mail hanno un argomento come il tuo.

Se desideri ricevere un'e-mail, scrivi uno script che non ha un output da solo. Ma invece metti tutto l'output in un file di testo.

E con

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

lo ricevi nel modo che preferisci.


Grazie Michèle. Speravo di utilizzare il sistema di posta elettronica automatico di Hostmonster, ma sembra che questa sarà la soluzione con cui vado. Invece di ricevere email Cron automatiche controllate dal mio hosting, invierò semplicemente le mie email.
justinl,

54

Oppure usa il comando sh noop (:)

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

Il soggetto sembra ancora kludgey, ma almeno è descrittivo e non richiede script estranei.


4
Questo è un trucco! (Mi piace.)
Maxy-B,

8
Si noti che lo spazio è importante dopo i due punti.
Patrick dimentica il

1
Il titolo sarà "Riepilogo coda"? E in questo caso il comando "qshape"?
Pratik Khadloya,

Sembra che qshape sia un comando postfix. La mia macchina unix utilizza il comando "mail". Ma il comando qshape è rilevante qui?
Pratik Khadloya,

1
Cordiali saluti, l'oggetto dell'email saràQueue Summary; PATH=/usr/sbin qshape
Akom

20

Invia l'output del tuo lavoro cron direttamente alla posta, quindi puoi compilare la riga dell'oggetto. la 2>&1sintassi invia qualsiasi output di errore che altrimenti scomparirebbe.

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

2
Sto facendo questo, ma interno allo script cron chiama perché voglio che l'oggetto rifletta l'esito positivo o negativo dello script in esecuzione.
Tom Barron,

13

Assumi la responsabilità di crond per l'invio dell'output del comando (o meno se non ce n'è) inviando l'output e stderr a "mailx -E". Per esempio:

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

L'opzione '-E' di Mailx è piacevole perché, proprio come lo stesso crond, non invierà una mail se non c'è alcun output da inviare.


1
Qual è la variabile $ LOGNAME qui?
Pratik Khadloya,

C'è un modo per inviare e-mail solo quando il codice di uscita del comando è diverso da zero?
Pratik Khadloya,

1
@PratikKhadloya, da 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
Esistono molteplici mailximplementazioni; solo alcuni offrono questa -Eopzione. Su Ubuntu vuoi i pacchetti bsd-mailxo heirloom-mailx; il mailutilspacchetto contiene un mailxcomando Gnu con un diverso -E.
Smylers,

2

Un'altra soluzione è scrivere uno script di shell con l'oggetto desiderato che chiami il comando giusto. Nel tuo esempio, questo sarebbe:

#Optimize_MySQL_Database.sh

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

È possibile includere la directory bin nel percorso impostandola nel file crontab.


0

PROVA QUESTO - Nella riga di comando implementa il seguente codice ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Questo è solo un riferimento per guidarti
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.