Enviando saída cron para um arquivo com um registro de data e hora em seu nome


38

Eu tenho um crontab como este em uma configuração LAMP:

0 0 * * * /some/path/to/a/file.php > $HOME/cron.log 2>&1

Isso grava a saída do arquivo no cron.log . No entanto, quando executado novamente, substitui o que estava anteriormente no arquivo.

Como posso obter o cron para gerar um arquivo com um carimbo de data / hora no nome do arquivo?

Um exemplo de nome de arquivo seria algo como isto: 2010-02-26-000000-cron.log

Eu realmente não me importo com o formato, desde que ele tenha um carimbo de data / hora de algum tipo.

Desde já, obrigado.


8
se você não quer $HOME/cron.logser sobrescrito, >>não use>
Dave Cheney

Respostas:


66

Experimentar:

0 0 * * * /some/path/to/a/file.php > $HOME/`date +\%Y\%m\%d\%H\%M\%S`-cron.log 2>&1

Brinque com o formato da data, se quiser; apenas a certeza de escapar de qualquer %como \%, como acima.


E deixe-me geralmente sugerem uma abordagem para nomes de arquivos como 0 0 * * * /some/path/to/a/file.php > $HOME/scriptname-data + \% Y \% m \% d \% H \% M \% S.log
Kristian

Se você precisar de uma tentativa pouco mais legível: date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cron.log
DevilCode

4
@DevilCode, sim, embora os espaços nos nomes de arquivos não sejam muito convencionais no Unix. Hífens ou sublinhados pode ser uma opção melhor: date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log.
fissão

11
Esses malditos personagens de fuga sempre me pegam. Obrigado pela lembrança!
Tony-Caffe

14

eu recomendo que você salve tudo no mesmo arquivo, usando o timestamp, conforme explicado aqui .

remover

2> & 1

e execute-o através do script de registro de data e hora antes de salvá-lo no arquivo de log (como explicado no link acima).


6

Você também pode anexar sua saída ao arquivo de log fazendo o seguinte:

0 0 * * * /some/path/to/a/file.php >> $HOME/cron.log 2>&1

0

Eu modifiquei o script assim:

`/bin/date +\%Y\%m\%d`.log

-2

Eu resolvi esse problema; basta adicionar o caminho da data (/ bin / date) antes do comando date.


2
Por favor, adicione mais informações e exemplo.
Danijel

-2
@daily /some/path/to/a/file.php 2>&1 > $HOME/$(date +\%Y\%m\%d\%H\%M\%S)-cron.log

5
Isso precisaria de muita explicação.
Sven
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.