Excluir arquivos apenas com logrotate

2

Eu tenho um aplicativo que roda seus próprios arquivos de log de hora em hora. A cada hora, desejo remover todos os arquivos com mais de n dias. Eu tenho que usar logrotate para fazer isso por causa da política de negócios.

Então, qual é o logrotate equivalente de executar este comando a cada hora?

find /var/log/app -name "*.old" -mtime +1 -exec rm -f {} \;
    
por user3642765 15.09.2015 / 14:49

2 respostas

1

é uma possibilidade e você precisa testar:

cat /etc/logrotate.d/customapp

/var/log/app/*.old {
    daily
    missingok
    rotate 0
    notifempty
}

Por que girar 0?

If count is 0, old versions are removed rather than rotated. (source : man)

    
por 15.09.2015 / 18:05
0

logrotate é executado uma vez por dia e o script pode ser encontrado aqui, /etc/cron.daily/logrotate (no CentOS 7). Se você quiser executá-lo a cada hora, primeiro é necessário movê-lo para /etc/cron.hourly/ . Então, para o comando acima, o script logrotate equivalente pode ter esta aparência,

$ cat /etc/logrotate.d/app

/var/log/app/*.old {
  hourly
  rotate 0
  firstaction
    /usr/bin/find /var/log/app/ -name "*.old" -mtime +1 -delete
  endscript
  nocreate
  missingok
  notifempty
}
    
por 22.11.2018 / 06:00

Tags