Como posso adicionar um registro de data e hora ao final do nome do arquivo de saída de uma tarefa cron?

5

Eu quero rastrear cada saída do crontab para um arquivo separado. Normalmente, eu uso isso como entrada do crontab:

1  *    * * *   root    php /mix/dostuff.php > /tmp/dostuff.txt

Agora, quero fazê-lo para escrever em vez de /tmp/dostuff.txt , para /tmp/dostuff-YYYY-MM-DD-HH-II-SS.txt

Eu poderia pegar a parte da data, usando isso:

TIMESTAMP='date +%Y-%m-%H\ %k:%M:%S'

Agora, como eu coloco este TIMESTAMP no arquivo de saída?

    
por ariefbayu 09.09.2009 / 12:40

3 respostas

1

crontabs são executados em um ambiente diferente do padrão, então você pode usar um pequeno script de shell em seu diretório home com algo parecido com isto (nomearemos script.sh ):

#!/bin/bash
php /mix/dostuff.php > /tmp/dostuff-'date +%Y-%m-%H\ %k:%M:%S'.txt
exit

altere as permissões deste script para garantir que ele seja executável, 755 deve estar correto. Então no seu crontab:

1  *    * * *   root    /home/yourusername/script.sh
    
por 09.09.2009 / 12:44
8
1  *    * * *   root    php /mix/dostuff.php > "/tmp/dostuff-'date +\%Y-\%m-\%H\ \%k:\%M:\%S'.txt"

Simples assim.

    
por 09.09.2009 / 12:52
2

No CentOS 6.6, eu uso

*/10 * * * * /usr/bin/php -q /var/www/script.php > cron-job-log-$(date +\%Y\%m\%d\%H\%M\%S).txt

ele criará um arquivo a cada 10 min

cron-job-log-20150401124001.txt
    
por 01.04.2015 / 18:53

Tags