Як логротат точно обробляє "щоденно"?


30

Судячи з часових позначок на моїх системах, logrotate здійснює щоденне обертання журналу, коли logrotate управляється cron. Однак якщо я запускаю його раніше, він не обертає файли. Звідки logrotate знає, чи слід їх обертати чи ні, чи зберігає історію чи, можливо, використовує часові позначки?

Відповіді:


32

Я вважаю, що це вміст державного файлу, який є моєю справою /var/lib/logrotate.status. Кожен файл має один рядок, який є датою, коли він востаннє обертався; якщо ви запустили логротат у таку дату, коли певний файл повинен повернутись, враховуючи кількість днів між поточною датою та датою у файлі (1 на день, 7 на тиждень тощо), файл буде повернутий.

логротату, здається, не хвилює, в який час доби він працює; навіть якщо він зазвичай працює в 2355, якщо ви замість цього запустите його о 0130, він все одно буде обертати файли, позначені щодня та востаннє зроблені вчора; але зробивши це, він би вніс сьогоднішню дату у файл стану (проти будь-яких повернутих файлів), тож другий запуск у 2355 нічого не зробить.


1
Хм .. Тож він обертається лише якщо: поточна дата> дата в /var/lib/logrotate/status(як файл у моєму випадку).
Кайл Брандт

2
Я думаю, що це робить щось взагалі, якщо минуло 24 години з моменту останнього запуску, який він працює, вивчаючи mtime державного файлу. Після того, як вирішено пройти цілий день, і він може законно робити що-небудь взагалі, він приймає рішення щоденно, тиждень тощо. На основі полів дати у файлі.
MadHatter підтримує Моніку

4
Ну, здається, використовується дата у цьому файлі. Я встановив день одного дня назад у файл статусу і запустив його ... він повернувся ..
Кайл Брандт

Щойно повернувшись назад і тицьнувши мою логротату, я думаю, що я помилявся, і те, що ви пишете вище, правильно. Він вирішує, чи це вже запущено сьогодні, дивлячись на часову марку державного файла; якщо цього немає, він продовжує витягувати дати останнього обертання з державного файла і діє відповідно. Я просто збрехав логротувати з vi і торкнутися -t, щоб переконати, що він востаннє пробіг о 2355 вчора, коли він обертав мої журнали мунінів. Запустивши його знову, хоча минуло менше 24 годин, він повернув їх і відповідно оновив файл стану.
MadHatter підтримує Моніку

Я оновив свою відповідь на моє теперішнє розуміння, враховуючи набір тестів, які я щойно провів (нарізання моїх журналів муніту вісім способів із неділі, але кого це хвилює!).
MadHatter підтримує Моніку

11

На сторінці чоловіка logrotate:

Зазвичай логротат виконується як щоденна робота з хроном. Він не змінює журнал більше одного разу за один день, якщо критерій для цього журналу не ґрунтується на розмірі журналу і логротат виконується не раз на день, або якщо не використовується параметр -f або -force.


1
щоб побачити, коли запускається cron.daily, перейдіть сюди .
Тревор Бойд Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.