trabalho cron de execução longa não está enviando sua saída

4

Eu tenho um cron job executando um script que leva cerca de 6 horas para ser concluído. O problema é que o cron não está me enviando a saída desse trabalho, e eu gostaria disso.

Eu tenho em / etc / crontab e é algo como:

0 *    * * *   myuser    /usr/local/bin/my-script

Sim, essa é a corrida a cada hora, mas há um arquivo de bloqueio no script, portanto, se a execução anterior não foi concluída, a nova execução do script será encerrada imediatamente sem fazer nada.

O sistema é Debian 5.0 'lenny' e o MTA é o Postfix.

Se o trabalho for interrompido (com "kill $ PID") no início da execução, receberei um e-mail com a saída do trabalho. Além disso, se eu modificar o script para fazer 10 vezes menos coisas, também recebo um e-mail. Só se o script estiver rodando por algumas horas eu não recebo nenhum e-mail.

Linhas relevantes de ps afx pouco tempo após o início da tarefa cron:

 8222 ?        Ss     0:04 /usr/sbin/cron
13265 ?        S      0:00  \_ /USR/SBIN/CRON
13297 ?        Ss     0:00      \_ /bin/bash /usr/local/bin/my-script
13395 ?        S      0:16      |   \_ /usr/bin/python /usr/local/bin/some-script.py
17065 ?        S      0:00      \_ /usr/sbin/sendmail -i -FCronDaemon -oem myuser
17066 ?        S      0:00          \_ /usr/sbin/postdrop -r

Portanto, parece que o MTA já é chamado quando a tarefa cron inicia, não quando termina. Isso pode estar relacionado ao problema? Pode ser possível que o Postfix não goste de postdrop rodando tanto tempo, e isso acaba ou algo assim? Como posso resolver o problema? Eu preciso ter a saída enviada por e-mail para mim.

    
por miernik 15.05.2011 / 03:50

1 resposta

2

Como solução alternativa: redirecionar a saída para um arquivo e enviá-la de dentro do script do cron?

Como uma ferramenta de depuração: execute a partir do cron uma série de scripts que apenas imprimem uma data, imprimem seu nome, duração pretendida de sono, dormem por n minutos, imprimem uma data e depois fecham. Eu correria todos eles ao mesmo tempo, para ter resposta em 7 horas. Se você testar períodos de sono de 1h a 7 horas com, digamos, 10 min de incremento, saberá se é um problema de tempo limite ou algo a fazer apenas com o script.

    
por 15.05.2011 / 11:16