Prática recomendada: como manter / girar arquivos de log (da saída redirecionada)

0

Eu li várias perguntas para o tópico mencionado, mas não tenho certeza se elas realmente respondem à pergunta do meu problema.

Eu tenho um aplicativo em execução e redireciono a saída para um arquivo de log, ou seja,

nohup ./start.sh ./config/s.properties >./logs/app.log 2>&1 &

O arquivo tem agora 80 GB e gostaria de apagá-lo. A maioria das respostas aqui sugere não excluí-lo, porque os dados ainda serão gravados no arquivo "excluído". Respostas sugerem para usar logrotate em vez disso, mas eu estou querendo saber se logrotate trabalha com saída redirecionada?

Se funcionar, como seria a configuração? Preciso de algum comando postrotate? Devo mencionar que é impossível para mim parar e reiniciar o aplicativo em execução, portanto, gostaria apenas de "roubar" o arquivo e deixar o aplicativo em execução gravar em um novo.

Se logrotate não é a solução, o que devo fazer - novamente, não posso parar e reiniciar o aplicativo em execução - para que eu possa reduzir o tamanho do arquivo?

Obrigado por qualquer ajuda!

PS: Apenas para mencionar que o aplicativo está sendo executado em um sistema operacional Debian8 64

    
por Philipp 14.05.2018 / 23:19

1 resposta

0

Se você excluir o arquivo enquanto um processo tiver um identificador de arquivo aberto, o Linux manterá o conteúdo ativo no disco até que o processo feche o identificador de arquivo. Se você não quiser manter o conteúdo existente do longo, você pode simplesmente truncá-lo:

> ./logs/app.log 
# or
truncate -s 0 ./logs/app.log

Isso deve limpar o conteúdo existente do arquivo.

    
por 15.05.2018 / 04:01