I am considering creating a cron job that will run once a month and remove the oldest characters (closest to the top) from each log file, making each 100 megs of less in size.
Existem alguns problemas que podem surgir com essa metodologia, portanto, primeiro certifique-se de que o processo de registro está correto e continue a registrar quando você editar um arquivo dessa maneira. Se ele mantiver o identificador de arquivos aberto, provavelmente é uma má idéia.
A maneira normal de gerenciar logs é com logrotate
, mas observe que há problemas potenciais com isso também - alguns aplicativos reagirão mal a ter seus arquivos de log trocados. O registrador do sistema, na verdade, se enquadra nessa categoria e deve ser sinalizado após a rotação para reabrir o novo registro.
Uma opção similar que evita interromper o processo, se ele pode logar na saída padrão ou erro padrão, é usar pipelog . O Pipelog age como um intermediário para o processo e o arquivo de log para que você possa sinalizá-lo para girar ou excluir o registro sem interromper ou perturbar qualquer coisa:
> someprocess | pipelog someprocess.logfile &
[pipelog 5334] Using 'someprocess.logfile' as a log file.
Você pode girar o log enviando o pipelog SIGUSR1: kill -s USR1 5334
, ou excluí-lo e iniciar um novo com SIGUSR2.