Можно ли выполнить одну проверку logrotate вручную?

541

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

Владимир
источник
3
Проблема с logrotate заключается в том, что у него есть один файл глобальной конфигурации, и он НЕ позволяет запускать один файл субконфигурации вращения журнала, в то же время применяя параметры, заданные в файле глобальной конфигурации. То есть у него нет хорошего способа запустить только ОДНУ проверку файла ротации журнала, точно так же, как при запуске каждую ночь из cron. Это может быть сделано с опцией «ограничить эти файлы журнала», или, что еще лучше, «запустить глобальную конфигурацию, но включить только этот файл субконфигурации».
Энтони

Ответы:

717

Да: logrotate --force $CONFIG_FILE

знак абзаца
источник
115
обратите внимание, что --forceфайлы будут вращаться, даже если они не соответствуют указанным критериям, таким как минимальный размер, возраст и т. д.
xofer
4
Если вы поместите файл конфигурации logrotate в /etc/logrotate.d/custom.conf, значит ли это, вам не нужно указывать размер / время, когда журнал должен автоматически вращаться? Или вы должны поместить конфигурацию в другую папку, если вы не собираетесь делать это автоматически?
Damainman
18
Критерии «notifempty» не игнорируются «--force». Это на некоторое время поставило меня в тупик, поэтому я упоминаю это как исключение из заявления @xofer.
Thelogix
16
Вы можете просто вращать все с помощью logrotate --force /etc/logrotate.d/(только имя каталога)
fcm
1
Это правда, что --forceвызовет ротацию, даже если файлы не соответствуют критериям (возраст, размер и т. Д.), Но, пожалуйста, учтите, что это единственный способ обнаружить реальные проблемы, с которыми logrotate -dне может возникнуть (например, у меня на сервере не хватает пространство из-за logrotate не работает в течение нескольких месяцев ... и благодаря тому, что --forceя выяснил, что были File existsошибки. Я вручную удалил эти файлы, и теперь вращение снова работает правильно!
lucaferrario
559

logrotate -d [your_config_file] вызывает режим отладки, предоставляя подробное описание того, что произойдет, но оставляя файлы журнала без изменений.

sandover
источник
81
те, кто пришел сюда в поисках ответа на вопрос типа «как я могу проверить мой logrotate conf?» может принять это как ответ, так как он просто
ИСПЫТЫВАЕТ
не нарушил ваш подход, я пробовал logrotate --forceи работает хорошо.
Беньямин Джафари
122

Если вы хотите принудительно запустить отдельный каталог или файлы журналов демона, вы обычно можете найти конфигурацию /etc/logrotate.d, и они будут работать автономно.

Имейте в виду, что глобальная конфигурация, указанная в /etc/logrotate.conf, не будет применяться, поэтому, если вы сделаете это, убедитесь, что вы конкретно указали все опции, которые вы хотите в /etc/logrotate.d/[servicename]конфигурационном файле.

Вы можете попробовать это, -dчтобы увидеть, что произойдет:

logrotate -df /etc/logrotate.d/nginx

Затем вы можете запустить (используя nginx в качестве примера):

logrotate -f /etc/logrotate.d/nginx

И только логи nginx будут вращаться.

trisweb
источник
1
Это хорошо, но вы теряете все глобальные настройки, которые у вас есть в /etc/logrotate.conf. Я написал скрипт для объединения глобальных и специфических файлов logrotate, а затем использовал его для решения этой проблемы. (см. мой ответ).
Энтони
Использование также logrotate -d /etc/logrotate.confбудет запускаться через любые другие включенные файлы conf.
Wmassingham
61

Возможно, вы захотите запустить его в режиме verbose + force.

logrotate -vf /etc/logrotate.conf

vivekv
источник
36

Способ запустить все logrotate:

logrotate -f /etc/logrotate.conf

который запустит основной файл logrotate, который включает в себя и другие конфигурации logrotate

Аллен Хэнкок
источник
21

Выполните следующую команду, способ запустить указанный logrotate:

logrotate -vf /etc/logrotate.d/custom

Опции:

-v: показать процесс

-f: принудительный запуск

custom: пользовательские настройки журнала

например: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}
wangc
источник
плюс1 за предоставление полного примера. PS Как мы можем определить, что logrotate на самом деле делает с файлами ?
personal_cloud
7

Отредактируйте /var/lib/logrotate.status, чтобы сбросить дату «последнего поворота» в файле журнала, который вы хотите проверить.

Тогда беги logrotate YOUR_CONFIG_FILE.

Или вы можете использовать флаг --force, но редактирование logrotate.status дает вам большую точность по сравнению с тем, что происходит, а что не поворачивается.

Бен Авелинг
источник
Этот /var/lib/logrotate.statusфайл не существует в Debian Squeeze.
Лашэ
Попробуйте / var / lib / logrotate / status. Я не уверен, что это Debian / Redhat, или я поставил "." где я должен был поставить "/".
Бен Авелинг
2

Создан сценарий оболочки для решения проблемы.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Этот скрипт будет запускать только один файл субконфигурации logrotate, находящийся в /etc/logrotate.d, но включать глобальные настройки из файла глобальной конфигурации "/etc/logrotate.conf". Вы также можете использовать другие otpions для тестирования ...

Например...

  logrotate_one -d syslog
Энтони
источник