Você deve lidar com esse tipo de problema com logrotate
, ele é projetado especificamente para essas tarefas.
Por exemplo, para permitir que logrotate
gire o arquivo /var/mail/root
se o tamanho do arquivo se tornar 10 MB, você poderá adicionar um arquivo de configuração logrotate
, por exemplo, /etc/logrotate.d/mailroot
com o conteúdo:
/var/mail/root {
size 10M # Rotate if the size is >=10MB
rotate 5 # Keep 5 rotated logs
notifempty # Do not rotate if empty
compress # Compresses rotated logs, default
}
Você também pode definir para o diretório inteiro usando curinga, *
, para que seja aplicável a todos os arquivos contidos nele:
/var/mail/* {
....
}
Como o logrotate
é executado diariamente por cron
( anacron
), não é necessário adicionar nenhuma entrada cron
se a configuração for colocada em /etc/logroate.conf
ou /etc/logroate.d/*
. Você também pode definir sua própria entrada crontab
se o arquivo de configuração residir em outro lugar, você também pode precisar de um arquivo de estado que conterá a rotação atual do arquivo tatus.
Mais importante, confira man logroate
e man 5 logroate.conf
para ter mais ideias e opções.