Como faço com que o crontab gere um log único toda vez que ele executa um job?

6

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 toda vez que o trabalho é executado?

Eu sou legal em adicionar um contador crescente ao arquivo de log toda vez que ele é gerado. Não sabe como fazer isso.

Eu realmente preciso executar outro trabalho do cron para fazer isso?

    
por nebulus 25.09.2012 / 03:58

1 resposta

7

Você pode usar o comando date 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

EDIT: Evite os sinais de porcentagem ( \% ). Eles têm um significado especial no cron e o crontab retornará um erro.

Dessa forma, um novo arquivo de log (chamado <date_time>.log ) será criado toda vez que seu trabalho 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 freqüência do que uma vez por segundo (o que não acontece se você estiver executando um crontab simples), você deve estar bem.

Se, conforme sugerido nos comentários, seu script for executado por diferentes usuários, 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
    
por 25.09.2012 / 04:40

Tags