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.