Logrotate: работайте каждый часы N

Рассмотрите сервер, который генерирует обширный вход, которые заархивированы с помощью logrotate и bz2:

"/var/log/uwsgi/*/*.log" {
  copytruncate
  daily
  rotate 14
  compress
  delaycompress
  missingok
  notifempty
  compresscmd /bin/bzip2
  uncompresscmd /bin/bunzip2
  compressext .bz2
}

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

Существует ли способ установить logrotate для выполнения каждой данной суммы часов? Вызов каждые 6 часов идеально подходил бы для моего случая.

3
задан 12 November 2014 в 08:36

1 ответ

Выполнение logrotate commad с -f в cronjob мог быть достаточно. От man logrotate:

-f, --force
      Tells logrotate to force the rotation, even if it doesn't  think
      this  is  necessary.   Sometimes this is useful after adding new
      entries to a logrotate config file, or if  old  log  files  have
      been  removed  by  hand,  as  the new files will be created, and
      logging will continue correctly.

Так редактирование /etc/crontab и добавьте:

30 */6 * * * root logrotate -f /etc/logrotate.conf

Измените минуту для удовлетворения потребностям. */6 средства это должно работать каждые шесть часов.


Это повернет все файлы журнала, так изолируйте настройки для приложения к (автономному) файлу конфигурации, затем используйте это в качестве параметра. Например, создать /etc/logrotate.d/uwsgi, содержа:

"/var/log/uwsgi/*/*.log" {
  copytruncate
  daily
  rotate 14
  compress
  delaycompress
  missingok
  notifempty
  compresscmd /bin/bzip2
  uncompresscmd /bin/bunzip2
  compressext .bz2
}

наряду с любыми другими строками в /etc/logrotate.conf то, что можно неявно полагаться. Затем crontab запись будет похожа:

30 */6 * * * root logrotate -f /etc/logrotate.d/uwsgi
4
ответ дан 17 November 2019 в 20:22

Другие вопросы по тегам:

Похожие вопросы: