Como faço para que o crontab gere um log exclusivo cada vez que executa um trabalho?

Como faço para que o crontab gere um log exclusivo cada vez que executa um trabalho?

Aqui está o trabalho do crontab

/usr/local/bin/python2.7 /home/scripts/script.py >> /home/scripts/logs/log.log 2>&1

Como faço para gerar um novo log sempre que o trabalho é executado?

Não há problema em adicionar um contador crescente ao arquivo de log cada vez que ele é gerado. Não sei como fazer isso.

Eu realmente preciso executar outro cron job para fazer isso?

Responder1

Você pode usar o datecomando para gerar um nome de arquivo exclusivo (ish):

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/"`date +\%d\%m\%y_\%H\%M\%S`".log 2>&1

EDITAR:Certifique-se de escapar dos sinais de porcentagem( \%). Eles TEM umsignificado especialno cron e o crontab retornará um erro.

Dessa forma, um novo arquivo de log (chamado <date_time>.log) será criado toda vez que seu job for executado.

$ date; touch "`date +%d%m%y_%H%M%S`.log"
  Tue Sep 25 04:39:25 CEST 2012
$ ls *log
  250912_043925.log

Supondo que seu script não seja executado com mais frequência do que uma vez por segundo (o que não acontecerá se você estiver executando um crontab simples), você deve ficar bem.

Se, conforme sugerido nos comentários, seu script for executado por usuários diferentes, você poderá adicionar o nome de usuário ao nome do arquivo de log:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/$(echo -n `whoami`_`date +\%d\%m\%y_\%H\%M\%S`).log 2>&1

informação relacionada