Debilni chovani logrotate v Centos 7

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Duben 5 11:46:22 CEST 2018


On Sun, 1 Apr 2018, Petr Simek wrote:

> jsem trochu nestastny z chovani logrotate v novem Centosu 7. U logu
> kde ma definovano 'rotate monthly' mi to vzdy na jare po zmene casu
> Z->L zrotuje dvakrat. Jednou ve stredu nasledujici po nedeli kdy se
> menil cas a pak jeste spravne 1.4. : [...]

To je fakt zvláštní. Asi by bylo potřeba to zkusit nasimulovat a sledovat, 
co se tam děje.

> 'rotate weekly' na Centos7 je taky divny - nekdy rotuje dle ocekavani
> v nedeli rano, nekdy v pondeli rano :

Jak bylo zmíněno na tom centosím fóru, tak dřív si logrotate pamatoval
v logrotate.status jen datum poslední rotace, např.

"/var/log/messages" 2018-4-1

ovšem podle nového světového pořádku tam má i čas, např.

"/var/log/messages" 2018-4-1-3:45:1

(zřejmě to bylo motivováno snahou, aby logrotate uměl i rotaci každou 
hodinu).

Podle /var/log/cron se logrotate spouští každý den někdy mezi 3. a 4. 
hodinou ráno, ale není to úplně pravidelné. Kouknul jsem se na jeden 
testovací stroj a tam jsem objevil jeden případ týdenní rotace odložené na 
pondělí:

Mar 11 03:44:01
Mar 18 03:33:01 <-- rotace se neprovedla v neděli
Mar 19 03:09:01 <-- ale až v pondělí
Mar 25 03:13:01
Apr  1 03:45:01

Je to malý vzorek, tak z toho nelze dělat žádné zásadní závěry, ale je 
možné, že když se to spustí v neděli v dřívějším čase než předchozí neděli 
(03:33:01 < 03:44:01), tak si logrotate myslí, že je to moc brzo. 
logrotate(8) to popisuje takto:

        weekly Log  files  are  rotated  if the current weekday is less
               than the weekday of the last rotation or if more than a week
               has passed since the last rotation. This is  normally the
               same as rotating logs on the first day of the week, but
               it works better if logrotate is not run every night.

Jelikož to počítá dny po angloamericku, tak neděle < pondělí, čili po 
pondělním spuštění se to vrátí na neděli. Ale pokud "more than a week" 
posuzuje jako "nejméně 168 hodin", tak by to odpovídalo výše uvedené 
hypotéze, že to na pondělí sklouzne v případě, že se to v neděli spustilo 
dřív než předchozí neděli.

Zdá se, že to už někdo opravoval:
<https://github.com/logrotate/logrotate/commit/bd2638856dbbb6c0a47beb85fe8a8a628160772e>
ale nějak se to už nedostalo do distribuce.

-- 
Pavel Kankovsky aka Peak                      "Que sçay-je?"


Další informace o konferenci Linux