Como modificar um assunto de email Cronjob

49

Estou executando meia dúzia de trabalhos cron diferentes da minha hospedagem no Hostmonster.com. Quando um cronjob é executado, recebo um email com a saída do script.

O email vem no formato de:

De: Cron Daemon
Assunto: Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

O problema disso é que o assunto do email dificulta a leitura a qual cronjob o email está relacionado.

Existe uma maneira de modificar o assunto de um email do cronjob para facilitar a leitura?

Por exemplo:

De: Cron Daemon
Assunto: Otimizar banco de dados MySQL
justinl
fonte

Respostas:

11

Nos meus sistemas (na maioria dos Debian), todas as saídas, de um script / programa chamado como entrada de crontab, são enviadas por email para account@localhostquem iniciou o cron. Esses e-mails têm um assunto como o seu.

Se você deseja receber um email, escreva um script que não tenha saída por conta própria. Mas, em vez disso, coloque toda a saída em um arquivo de texto.

E com

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

você o recebe da maneira que deseja.

Michèle
fonte
Obrigado Michèle. Eu esperava usar o sistema de e-mail automático da Hostmonster, mas parece que essa será a solução que eu uso. Em vez de receber e-mails do Automatic Cron controlados pela minha hospedagem, enviarei meus próprios e-mails.
Justinl 20/08/09
54

Ou use o comando sh noop (:)

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

O assunto ainda parece esquisito, mas pelo menos é descritivo e não requer scripts estranhos.


fonte
4
Agora isso é um truque! (I como.)
Maxy-B
8
Observe que o espaço é importante após o cólon.
Patrick Esqueça
11
O título será "Resumo da fila"? E o comando "qshape" neste caso?
Pratik Khadloya
Parece que qshape é um comando postfix. Minha máquina unix usa o comando "mail". Mas o comando qshape é relevante aqui?
Pratik Khadloya
11
Para sua informação, o assunto do email seráQueue Summary; PATH=/usr/sbin qshape
Akom
20

Canalize a saída da sua tarefa cron para enviar por e-mail diretamente e, em seguida, você poderá preencher a linha de assunto. a 2>&1sintaxe envia qualquer saída de erro que de outra forma desapareceria.

mycmd 2>&1 | mail -s "mycmd output" myname
Mark Harrison
fonte
2
Estou fazendo isso, mas interno ao script que o cron chama porque quero que o assunto reflita o sucesso ou a falha do script que está sendo executado.
Tom Barron
13

Assuma a responsabilidade da crond de enviar a saída do comando (ou não, se não houver), canalizando a saída e stderr para 'mailx -E'. Por exemplo:

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

A opção '-E' do Mailx é boa porque, assim como o próprio crond, ele não envia um email se não houver saída a ser enviada.

Alexis Huxley
fonte
11
Qual é a variável $ LOGNAME aqui?
Pratik Khadloya
Existe uma maneira de enviar email apenas quando o código de saída do comando for diferente de zero?
Pratik Khadloya
11
@PratikKhadloya, de 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
Existem várias mailximplementações; apenas alguns deles oferecem essa -Eopção. No Ubuntu você deseja que o bsd-mailxou heirloom-mailxpacotes; o mailutilspacote contém um mailxcomando Gnu com um diferente -E.
Smylers
2

Outra solução é escrever um shell script com a linha de assunto que você deseja que chama o comando certo. No seu exemplo, isso seria:

#Optimize_MySQL_Database.sh

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

Você pode incluir o diretório bin no caminho, definindo-o no arquivo crontab.

EEAA
fonte
0

Experimente - na linha de comando, implemente o seguinte código ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" [email protected].**
  • Esta é apenas uma referência para guiá-lo
sudhu
fonte