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

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.


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.


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

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.


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.


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*" YOUR@MAIL.COM.**
  • Esta é apenas uma referência para guiá-lo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.