Рассмотрите сервер, который генерирует обширный вход, которые заархивированы с помощью 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 часов идеально подходил бы для моего случая.
Выполнение 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