Como posso configurar o logrotate para girar logs a cada hora?

19

De acordo com o Unix and Linux Handbook Administration e man , o logrotate tem opções para daily , weekly e monthly , mas existe uma maneira de adicionar uma opção hourly ?

Esta postagem do blog menciona que você pode definir size 1 e remover a opção de hora (por exemplo: daily ) e, em seguida, chamar manualmente logrotate com cron - suponho que algo como

logrotate -f /etc/logrotate.d/my-hourly-file

mas existe uma solução mais elegante para a rotação de toras a cada hora?

    
por cwd 20.01.2012 / 17:45

2 respostas

15

Dependendo do seu sistema operacional. Algumas (todas?) Distribuições Linux possuem um diretório /etc/cron.hourly onde você pode colocar tarefas do cron para serem executadas a cada hora.

Outros têm um diretório /etc/cron.d/ . Lá você pode colocar cron-jobs que devem ser executados como qualquer usuário especial com as configurações cron usuais de uma entrada crontab (e você tem que especificar o nome de usuário).

Se você usar um desses em vez do script de rotatividade de log padrão em /etc/cron.daily/ , deverá copiar esse script e cp /dev/null para a posição original. Caso contrário, ele será reativado por uma atualização de patch logrotate.

Para rotação horária adequada, também tome cuidado para que a diretiva dateext não seja definida. Em caso afirmativo, por padrão, o primeiro arquivo girado receberá a extensão da data atual como AAAAMMDD. Então, a segunda vez que o logrotate fica ativo no mesmo dia, ele simplesmente pula a rotação mesmo que o limite de size tenha excedido.

O motivo é que o novo nome do arquivo a ser rotacionado já existe e o logrotate não anexa o conteúdo ao arquivo antigo existente. Por exemplo, no RHEL e no CentOS, a diretiva dateext é fornecida por padrão em /etc/logrotate.conf . Depois de remover ou comentar essa linha, os arquivos girados simplesmente obterão um número em execução como extensão até atingir o valor rotate . Desta forma, é possível realizar várias rotações por dia.

    
por 20.01.2012 / 21:15
3

Apenas para adicionar à resposta de Nils, se estiver mudando a localização do script logrotate em uma caixa Debian ou Ubuntu, provavelmente é mais seguro usar dpkg-divert em vez de simplesmente copiar o arquivo e copiar /dev/null para a posição original por exemplo:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
    
por 22.05.2017 / 04:06