Como logrotate exatamente manipula “diariamente”?

27

A julgar pelos timestamps em meus sistemas, o logrotate faz sua rotação diária de log quando o logrotate é executado pelo cron. No entanto, se eu rodá-lo antes disso, ele não gira os arquivos. Como logrotate sabe se deve girá-los ou não, ele mantém um histórico ou talvez use timestamps?

    
por Kyle Brandt 04.11.2010 / 15:03

2 respostas

30

Acredito que seja o conteúdo do arquivo de estado, que é o meu caso /var/lib/logrotate.status . Cada arquivo tem uma linha, que é a data em que foi girada pela última vez; Se você executar logrotate em tal data que um dado arquivo é devido para rotação, dado o número de dias entre a data atual e a data no arquivo (1 para diariamente, 7 para semanalmente, etc.), o arquivo será rotacionado.

O logrotate não parece se importar com a hora do dia em que é executado; mesmo que normalmente seja executado em 2355, se você fosse executá-lo em 0130, ele ainda rodaria os arquivos marcados diariamente e os últimos feitos ontem; mas tendo feito isso, colocaria a data de hoje no arquivo de estado (contra quaisquer arquivos girados), então uma segunda execução em 2355 não faria nada.

    
por 04.11.2010 / 15:09
9

Da página de manual do logrotate:

Normally, logrotate is run as a daily cron job. It will not modify a log more than once in one day unless the criterion for that log is based on the log's size and logrotate is being run more than once each day, or unless the -f or -force option is used.

    
por 05.11.2010 / 14:54