Am următoarea configurație logrotate:
/var/log/chrony/*.log {
zilnic
lipsingok
nocreate
maxim 5
scripturi partajate
postrotate
/usr/bin/chronyc -a cyclelogs > /dev/null 2>&1 || Adevărat
script final
}
Prima dată când se rulează logrotate, acesta copiază toate fișierele jurnal de cronologie în fișiere cu extensia .log. exact cum trebuie. Mă aștept ca după ce se întâmplă acest lucru, postrotate să ruleze și chronyc să creeze fișiere noi care se termină în .log. Acest lucru nu se întâmplă. De exemplu, aceasta este lista mea de director chiar acum:
[log]# ls /var/log/chrony
măsurători.log-20210727 statistici.log-20210727 urmărire.log-20210727
Dacă rulez comanda logrotate manual, aceasta este ceea ce primesc
[log]# /usr/bin/chronyc -d -a cyclelogs
S-a rezolvat de la 127.0.0.1 la 127.0.0.1
S-a rezolvat de la ::1 la ::1
Deschiderea conexiunii la /var/run/chrony/chronyd.sock
Trimis 28 de octeți
Timeout 0,999857 secunde
A primit 28 de octeți
Răspuns cmd=37 răspuns=1 stat=0
200 OK
Deci, se pare că a reușit, dar lista de director nu se schimbă. Nu sunt create fișiere jurnal noi și mesaje jurnal noi sunt încă scrise în fișierele rotite. Lucrul cu adevărat ciudat este că am acest script logrotate pe aproximativ 50 de servere și funcționează pe o mână. Toate serverele rulează CentOS 7 (mai multe versiuni diferite de CentOS 7, dar nu pot vedea niciun model). Toate serverele rulează chrony-3.2-2.el7
Nu cred că logrotate este problema aici, deoarece rularea comenzii cyclelogs nu pare să facă ceea ce trebuie, chiar dacă o rulez în afara logrotate. Am înțeles greșit ce ar trebui să facă ciclurile? Rețineți că, dacă repornesc chronyd, face noile fișiere jurnal așa cum m-aș aștepta