O problema é que seu arquivo de log permanece aberto pelo aplicativo que está gravando nele. Se você truncar o arquivo ( > file.log
), seu aplicativo ainda escreverá a partir do ponto de sua última gravação (devido ao truncamento, suponho que seu arquivo será preenchido com 0 bytes até esse ponto). Se você mover o arquivo, seu aplicativo continuará a gravar, pois, uma vez aberto, o nome não importa. Se você remover o arquivo, os blocos não serão liberados do disco e o aplicativo ainda estará gravando nele, mesmo que o arquivo não esteja mais visível em seu diretório.
Este é um cenário clássico. Sua inscrição deve:
- reabra o arquivo de log periodicamente
- ou detectar que ele foi truncado e reabri-lo
- ou aguarde um sinal especial que diz "feche o arquivo de log atual e reabra-o"
Senão, não há nada que você possa fazer externamente, exceto reiniciar seu aplicativo. Você faria então da mesma maneira que logrotate
:
- primeiro mova o arquivo de log com um novo nome
- opcionalmente
touch
do arquivo de log com seu nome antigo para que o arquivo exista - reinicie o aplicativo para forçá-lo a parar de gravar no arquivo de log antigo e começar a gravar no novo.