Como compactar, manter e esvaziar o arquivo original com o gzip

2

Por algum motivo, não estou conseguindo usar o logotate para compactar arquivos periodicamente.
Então eu decidi escrever meu próprio roteiro, não é a coisa mais difícil, mas um pequeno detalhe está me prendendo. Ao usar o zip para compactar o arquivo, o logrotate mantém os arquivos originais e os esvazia. Eu posso usar o gzip, em seguida, echo para alcançar o mesmo resultado, mas assumindo que meu aplicativo está escrevendo muitos dados em logs, certamente haverá alguns logs perdidos em timestamps após executar o gzip e antes do echo

gzip -k file.log
echo "" > file.log

Alguma ideia de como posso fazer isso? Estou faltando uma opção de gzip que esvazia o arquivo original? Obrigado :)

    
por storm 05.12.2016 / 22:22

1 resposta

1

logrotate funciona (1) renomeando o arquivo de log como se estivesse usando mv , (2) criando um novo arquivo com o nome antigo, (3) sinalizando de alguma forma o (s) processo (s) escrito (s) no arquivo de log para fechar e reabri-lo (isso muda para o novo arquivo) e finalmente (4) compactar o arquivo renomeado.

O passo complicado é claro (3), porque como dizer a um processo que ele deve fechar e reabrir seu (s) registro (s) depende do processo específico. Por exemplo, se você procurar em /etc/logrotate.d/apache2 , ele usará o comando reload para fazer o Apache HTTP Server fechar e reabrir os logs, enquanto /etc/logrotate.d/samba mostra que, para o Samba, ele envia o sinal SIGHUP.

    
por AlexP 05.12.2016 / 22:38