Logrotate.d: napi rotálás kimaradása

Be van állítva a mail.log fájlra, hogy a logrotate naponta rotálja, mégis tegnap egy napot kihagyott. Előtte is rotált, ma is rotált. Mi lehet az oka?

A logrotate.d/mail fájl tartalma:

/var/log/mail.log
{
    rotate 378
    daily
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

A /var/lib/logrotate/status fájlban minden nap, azaz tegnap is bekerült az aktuális napi dátum.

A naplóban mindhárom napon szerepelnek a következő sorok:

Starting logrotate.service - Rotate log files...
logrotate.service: Deactivated successfully.
Finished logrotate.service - Rotate log files.

Néha még a "logrotate.service: Consumed 2.218s CPU time." sor is szerepel, de más nem, azaz hibaüzenet sincs.

A cron naplójában sem látok semmi furát, eltérést a napok között, nincs hibaüzenet.

Az /etc/logrotate.conf fájlban nincs globálisan megadva a "size" paraméter.

A nem rotált naplóból látszik, hogy minden nap sok sor kerül bele, így a "notifempty" opció sem okozhatta.

Van ötletetek, miért marathatott egyben a tegnapi és a tegnapelőtti log?

Hozzászólások

A cron-ban semmi furát nem fogsz látni, mert ahogy nézem, ez nem cron-ból fut nálad, hanem SystemD futtatja timer-ből.

Én néznék egy "journalctl -u logrotate.service" kimenetet, bár kétlem, hogy lesz benne bármi. Ha a disken a rotálás pillanatában volt hely akkor valamilyen hiba miatt nem indulhatott el a rotálás, ez utólag logok nélkül sajnos nem kideríthető.

Blog | @hron84

valahol egy üzemeltetőmaci most mérgesen toppant a lábával 

via @snq-

Ezt a "néha még" részt kicsit nyomozni kellene, mert instabil működésre utalhat.

logrotate -d /etc/logrotate.d/mail

nem ir ki valami hibát?

A logrotate -d /etc/logrotate.d/mail nem adott semmilyen hibát, és amúgy ma is rendben megcsinálta a léptetést.

Nézem az üzeneteit, és azt látom, hogy figyeli, mennyi idő telt el az utolsó rotálás óta.

Lehetséges, hogy egyik nap valami miatt kicsit később léptette a logot, mondjuk 00:01-kor, másnap pedig 00:00-kor, és így a két léptetés között még nem telt el a teljes 24 óra, és emiatt nem léptetett?

Árulkodik is. Egyszer 00:00, máskor 00:01 és van amikor 00:04. De sajnos úgy tűnik, a 00:04 után következő 00:01-kor is rendben ment a léptetés, tehát nem ez az ok.

Másik tippem, hogyha kézzel elindítom napközben, az okozhat ilyet? Mondjuk érdemben megváltozik a /var/lib/logrotate/status fájlban tárolt adat a fájlról, emiatt a következő napi léptetés elmaradhat? Magamtól azt gondolnám, hogy ebben a fájlban a léptetés ideje tárolódik, emiatt nem. De az AI szerint meg igen.

hiszen a 'daily' forgatás megtörtént, szerintem logikus, hogy nem csinálja meg mégegyszer...

(de ez csak tipp/megérzés, nem tudom az ide vonatkozó kódrészlettel bizonyítani)

case ROT_DAYS:
        state->doRotate = ((now.tm_mday != state->lastRotated.tm_mday) ||
                           (now.tm_mon  != state->lastRotated.tm_mon)  ||
                           (now.tm_year != state->lastRotated.tm_year));
        if (!state->doRotate) {
                message(MESS_DEBUG, "  log does not need rotating "
                        "(log has been rotated at %d-%02d-%02d %02d:%02d, "
                        "which is less than a day ago)\n",
                        1900 + state->lastRotated.tm_year,
                        1 +  state->lastRotated.tm_mon,
                               state->lastRotated.tm_mday,
                               state->lastRotated.tm_hour,
                               state->lastRotated.tm_min);
        }
        break;