A idéia dada em um dos comentários é geralmente o que é feito, mesmo se o link para outra pergunta tiver uma resposta errônea (e não aceita).
Para truncar o arquivo em um uso de shell POSIX:
cat /dev/null > _name_of_file_
Não cp
como uma resposta no link sugere. Claro, você pode querer copiar o arquivo antigo para um sistema de arquivos diferente ou para um local remoto, se quiser salvá-lo primeiro.
Em termos de baixo nível, a diferença é que você está abrindo o arquivo existente e com seu inode e truncando-o. Consulte o link e a opção O_TRUNC
.
Algumas outras coisas que funcionam em casos especiais. Às vezes, verifico /etc/logrotate.d
(ou algum outro programa de rotação de log adequado) para ver como isso troca os arquivos. Alguns comandos, como o apache2, possuem um comando reload
que faz com que ele carregue um arquivo de configuração e, no processo, reabra os arquivos de log.