Почему мой CentOS Logrotate работает в случайное время?

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} from anacron... /etc/anacrontabis настройка 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устранение проблемы ...

РЕДАКТИРОВАТЬ

После дальнейших раздумий я собираюсь удалить anacronи установить нормальный vixie cron...

Майк Пеннингтон
источник
Помните, что если ваш сервер по какой-то причине отключен, когда предполагается запустить anacron, он запустится через некоторое время после запуска системы. Таким образом, вы все равно можете получать ротации журналов в разное время. Вероятно, не огромная проблема, но стоит отметить.
AngerClown
Установка START_HOURS_RANGE в одно значение (= 3) не будет работать, так как этот диапазон ожидает диапазон, а не одно число. Так должно быть 3-4 в примере выше.
Славик
6

Не ответ, но я недавно пытался выяснить это по другой причине и не смог найти никакой документации о том, как Redhat 6, Centos и т. Д. Запускают cron. Вот что я сделал в обратном порядке:

  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также необходимо обновить. Это может или не может сломать будущие обновления ...

AngerClown
источник
4

Другие ответы охватывают как, но не обязательно почему . Причина , чтобы держать одновременно ночные хрон рабочих мест от убийства инфраструктуры. (Представьте себе общее хранилище, или, может быть, 1000 серверов, работающих на одном узле виртуальной машины, или просто ночные задания, которые затрагивают некоторые сетевые службы.)

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

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

mattdm
источник