Estamos vendo nossas /var/lib/logrotate/status
entradas inválidas como a seguir:
saurabh@1236:~$ cat /var/lib/logrotate/status
logrotate state -- version 2
"/var/log/syslog" 2018-3-13
"/var/log/auth.log" 2018-3-13
"/var/log/debug" 2018-3-13
"/var/log/lpr.log" 2018-3-13
"/var/log/user.log" 2018-3-13
"/var/log/mail.info" 2018-3-13
"/var/log/cron.log" 2018-3-13
og/messages" 2018-3-13 <=== Corrupted entry
"/var/log/cron.log" 2018-3-13
"/var/log/messages" 2018-3-13
Não tenho certeza de como isso é corrompido dessa maneira. Acontece aleatoriamente após 10/12 dias.
Meu palpite é que pode ser por causa de vários crons editando este arquivo, o que está causando esse problema como várias tentativas de editar este arquivo, mas não tenho certeza se esse pode ser o problema. Para testar se adicionei algum atraso aleatório em um dos cron recentes adicionados assim:
*/10 * * * * root sleep $(expr $RANDOM \% 90); /usr/sbin/logrotate -f /etc/logrotate.d/myFile
Alguma sugestão melhor para uma solução concreta?
Existem várias instâncias simultâneas de
logrotate
execução de tarefas cron em sua máquina. Não há bloqueio no arquivo de estado usado e, portanto, os diferenteslogrotate
trabalhos "pisam uns nos pés dos outros" ao atualizá-lo.Como você adicionou sua
myFile
configuraçãologrotate
no/etc/logrotate.d
diretório, não é necessário girá-los explicitamente em uma tarefa cron separada. A execução normal dologrotate
cron job selecionaria essa configuração automaticamente.Se você precisar executar a rotação com mais frequência do que a rotação de log padrão do sistema, recomendo colocar a
myFile
configuração em outro lugar.Para garantir que seu trabalho de rotação não use o mesmo arquivo de estado (nos casos em que o trabalho de rotação pode ser executado ao mesmo tempo que o trabalho de rotação de log do sistema), use outro arquivo de estado:
Observe que o trabalho não precisa ser executado como root, a menos que os arquivos de log pertençam ao root ou a algum usuário diferente de você. Em outras palavras, se os arquivos de log pertencem a você, você pode fazer a rotação em um cron job pessoal.