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.