Debilni chovani logrotate v Centos 7

Adam Pribyl pribyl na lowlevel.cz
Pátek Duben 6 15:05:37 CEST 2018


On Thu, 5 Apr 2018, Pavel Kankovsky wrote:

> On Thu, 5 Apr 2018, Petr Simek wrote:
>
>> On Thu, 5 Apr 2018, Pavel Kankovsky wrote:
>>
>>>  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.
>> 
>> Kolega co provozuje RedHat7 mi potvrdil ze se to chova stejne. A na Debianu 
>> ty mesicni logy rotuji taky blbe, jemu to navic zrotovalo
>> mesic jeste nekdy 3.ledna .
>
> Když psa říkal "nasimulovat a sledovat, co se tam děje", tak jsem měl na 
> mysli přesně to, co jsem psal.
>
> Jistý pan Alex Hornby byl tak laskav, že už vynalezl příkaz "dateshift", a 
> tak jsem nebyl nucel toto kolo vynalézat znovu a mohl jsem si to rychle 
> vyzkoušet, jak by to dopadlo, kdyby logrotate nastavil na měsíční rotaci 
> nějakého logu a pak simuloval jeho spouštění někdy od konce ledna až do 
> dnešního dne.
>
> Připojím zkrácenou ukázku toho, co se tam stalo:
>
> ==== 2018-03-23 03:41:01 ====
>  log does not need rotating (log has been rotated at 2018-3-1 2:45, that is 
> not month ago yet)
> ==== 2018-03-24 03:23:01 ====
>  log does not need rotating (log has been rotated at 2018-3-1 2:45, that is 
> not month ago yet)
> ==== 2018-03-25 03:13:01 ====
>  log does not need rotating (log has been rotated at 2018-3-1 1:45, that is 
> not month ago yet)
> ==== 2018-03-26 03:07:01 ====
>  log does not need rotating (log has been rotated at 2018-3-1 0:45, that is 
> not month ago yet)
> ==== 2018-03-27 03:35:01 ====
>  log needs rotating
>
> Problémem je nějaká zmatená interpretace časových údajů v souboru 
> logrotate.status: jakmile dojde ke změně na letní čas, tak to přečtený údaj 
> interpretuje o hodinu posunutý do minulosti a s tímto posunem ho zapíše i do 
> souboru. Každý den se to posune o hodinu zpět v čase, až se to dostane do 
> jiného měsíce, a pak několik dní po přechodu na letní čas dojde k zmatečné 
> rotaci!
>
> Problém je konkrétně ve funkci readState, která logrotate.status načítá. Ta 
> se pokouší přečtené údaje interpretovat funkcí mktime, ale nenamáhá se řádně 
> nastavit tm_isdst. Opět se zdá, že to už upstream logrotate opravil, ale 
> distribuce to má pořád ve vadné verzi:
>
> <https://github.com/logrotate/logrotate/commit/9c68d75c729b926e2c70bc579a12e58e472abf57>

Tak to je ale na jasny bug report... resp. u RH jsem nasel
https://bugzilla.redhat.com/show_bug.cgi?id=1465720
ale nejak se tam nemuzou dopocitat, dam jim tam odkaz sem, treba jim to 
pomuze.

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

Adam Pribyl


Další informace o konferenci Linux