cron cria um arquivo de saída somente se houver saída

1

Eu tenho um cronjob que chama um script. Eu quero que a saída seja colocada em um arquivo de log. O problema é que o arquivo de log é criado mesmo se não houver saída.

Como o trabalho é executado uma vez por hora, e principalmente não tem nada a ver. Estou terminando com muitos arquivos de 0 byte.

Eu provavelmente poderia anexar a um único arquivo de log, mas gostaria de saber se há um truque a ser usado para impedir que o arquivo de log seja criado ou excluí-lo se ele estiver vazio. (Eu realmente não quero executar um segundo cron-job para limpar após o primeiro)

Uma complicação é o fato de que os nomes de arquivos de log têm uma data / hora anexada a eles. A linha no crontab parece um pouco assim:

/your/script.sh config.txt > outfilepath_'date +\%Y-\%m-\%d_\%H\%M'.html 

Acho que isso significa que primeiro tenho que armazenar a data em uma variável e depois verificar se esse arquivo foi criado / vazio. Então, se eu pegar a resposta de Stone, acabo com algo como:

logfile=outfilepath_'date +\%Y-\%m-\%d_\%H'; your/script.sh config.txt > $logfile; if [! -s $logfile]; then rm $logfile; fi

mas não sei se isso é possível dentro do crontab

    
por Loopo 31.07.2013 / 10:42

1 resposta

2

Você pode escrever algo assim:

/your/script > /your/log/file; if [ ! -s /your/log/file ]; then rm /your/log/file; fi
    
por 31.07.2013 / 11:45

Tags