Você pode escrever algo assim:
/your/script > /your/log/file; if [ ! -s /your/log/file ]; then rm /your/log/file; fi
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