Logrotate Еженедельно в определенный день недели?

Так что это сводит меня с ума. Я запускаю logrotate еженедельно для нескольких разных журналов, и он работает так, как я ожидаю. Однако ротация журналов происходит в воскресенье, что совпадает с завершением некоторой обработки, которая ведет журналы в те каталоги, которые должны быть ротированы. В двух словах, я хотел бы повернуть эти файлы журналов в четверг, до этой обработки, и я хотел бы сохранить «исправление» в самих конфигурациях logrotate (запуск вручную logrotate --force или размещение этого в скрипте ).

Я использую RHEL5 со следующими конфигурациями:

cat /etc/logrotate.d/custom
/var/log/mpxx/mpxx_log {
  daily
  rotate 30
  compress
  missingok
  olddir /var/log/mpxx.old/
  create 644 user user
  dateext
}
/var/log/mpxx/repo.log /var/log/mpxx/stop_repo.log {
  weekly
  rotate 90
  compress
  missingok
  olddir /var/log/mpxx.old/
  create 644 user user
  dateext
}

cat /var/lib/logrotate.status
"/var/log/mpxx/repo.log" 2015-4-12
"/var/log/mpxx/stop_repo.log" 2015-4-12

Я вручную повернул журналы с помощью logrotate --force /etc/logrotate.d/custom в пятницу, 10 апреля, когда заметил проблему. Затем я вручную отредактировал файл logrotate.status, чтобы отразить следующее:

"/var/log/mpxx/repo.log" 2015-4-9
"/var/log/mpxx/stop_repo.log" 2015-4-9

К сожалению, мой запуск logrotate вручную и мои изменения в файле состояния не помешали logrotate выполнить ротацию файлов журналов 12 апреля, как отмечалось ранее.

Как я могу заставить logrotate выполнять ротацию еженедельно, но в определенный день недели? Мои поиски и исследования ничего не дали.

Заранее спасибо!


person mjshort    schedule 13.04.2015    source источник


Ответы (1)


Я знаю, что это старо, но мне просто пришлось самому реализовать что-то подобное, я нашел этот вопрос и подумал, что отвечу на него.

logrotate(8) имеет это встроенное:

       weekly [weekday]
              Log  files  are  rotated  once  each weekday, or if the date is advanced by at least 7 days since the last rotation (while ignoring the exact time).  The weekday interpretation is following:  0
              means Sunday, 1 means Monday, ..., 6 means Saturday; the special value 7 means each 7 days, irrespectively of weekday.  Defaults to 0 if the weekday argument is omitted.
person scottsome    schedule 22.09.2020