Чому мій CentOS логротат працює в довільний час?


10

Я помістив logrotateфайл конфігурації /etc/logrotate.d/і очікував, що журнали будуть послідовно обертатися; однак вони не ... Часи повороту журналу, здавалося б, випадкові +/- одна година.

Чому стартові часи обертання журналу випадкові, і як я можу це змінити?


Інформація: мій файл конфігурації logrotate виглядає так ...

/opt/backups/network/*.conf {
        copytruncate
        rotate 30
        daily
        create 644 root root
        dateext
        maxage 30
        missingok
        notifempty
        compress
        delaycompress
        postrotate
            ## Create symbolic links in daily/
            PATH=`/usr/bin/dirname $1`;
            FILE=`/bin/basename $1`;
            /bin/ln -s $1 $PATH/daily/$FILE
        endscript
}

Відповіді:


10

Ключ знаючи , що CentOS запускає скрипти в /etc/cron.{daily,weekly,monthly} з anacron... /etc/anacrontabвстановлює RANDOM_DELAY, що робить те , що можна було б очікувати (він затримує до RANDOM_DELAYхвилин , перш ніж почати роботу) ...

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Встановлення RANDOM_DELAY=0/ START_HOURS_RANGE=3виправлення проблеми ...

EDIT

Після подальшої думки, я збираюся видалити anacronі встановити звичайний Vixie cron...


Пам’ятайте, що якщо ваш сервер з якоїсь причини вимкнений, коли передбачається запуск анакрона, він запуститься колись після запуску системи. Таким чином, ви все одно можете отримувати обертання журналів у різні часи. Напевно, не величезне питання, але варто зазначити.
AngerClown

Встановити START_HOURS_RANGE на одне значення (= 3) не вийде, оскільки цей діапазон очікувань вар, а не єдине число. Тож має бути 3-4 у прикладі вище.
Славік

6

Не відповідь, але я нещодавно намагався з'ясувати це з іншої причини і не зміг знайти жодної документації про те, як Redhat 6, Centos і т. Д. Керують кроном. Ось що я розробив за реверсом:

  1. crond все ще працює при запуску системи - він завантажує всі файли в /etc/cron.d
  2. /etc/cron.d/0hourly запускає всі файли в /etc/cron.hourly
  3. /etc/cron.hourly/0anacron пробіжки anacron
  4. анакронові навантаження /etc/anacrontab
  5. /etc/anacrontabпрацює (через run-parts) /etc/cron.daily, /etc/cron.weeklyі/etc/cron.monthly

Отже, це складніше, ніж у попередніх версіях.

Можна відновити стару поведінку, додавши щогодинні, щотижневі та щомісячні записи назад /etc/crontab(які тепер порожні), але їх anacrontabтакож потрібно буде оновити. Це може або не порушить майбутні оновлення ...


4

Інші відповіді стосуються того, як, але не обов'язково, чому . Причина , щоб тримати одночасно нічні хрон робочих місць від вбивства інфраструктури. .

Я завжди вирішую цю проблему для обертання журналу в конкретних моїх системах, переміщуючи конкретну роботу повороту журналу з cron.dailyна запис із жорстким кодом часу cron.d. Таким чином, ви все одно отримуєте поетапні запуски для таких служб, як updatedb, де час насправді не суттєвий, але послідовні часи обертання журналу.

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

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