Чи можна запустити один логротатний чек вручну?


541

Чи можна запустити одну ітерацію логротату вручну, не плануючи її на деякий проміжок часу?


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] викликає режим налагодження, даючи докладний опис того, що буде, але залишаючи файли журналу недоторканими.


81
ті, хто прийшов сюди, шукаючи відповідь на запитання на кшталт "як я можу перевірити свою логротату конф?" можна сприймати це як відповідь, оскільки він ТЕСТУЄ
конфіденцію

не схвильований вашим підходом, я спробував 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 будуть обернені.


1
Це добре і добре, але ви втрачаєте будь-які глобальні налаштування, які ви маєте в "/etc/logrotate.conf". Я написав сценарій для об'єднання глобальних і конкретних файлів логротату разом, а потім використовую його для вирішення цієї проблеми. (див. мою відповідь).
Антоні

Використання також logrotate -d /etc/logrotate.confбуде запущено через будь-які інші включені файли конф.
wmassingham

61

Можливо, ви захочете запустити його у багатослівному режимі + сила.

logrotate -vf /etc/logrotate.conf


36

Спосіб запуску всього логротату:

logrotate -f /etc/logrotate.conf

який запустить основний файл логротату, який включає й інші конфігурації логротату


21

Випустіть таку команду, як запустити вказаний логротат:

logrotate -vf /etc/logrotate.d/custom

Параметри:

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

-f: примусовий біг

звичай: налаштування журналу, визначене користувачем

наприклад: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

плюс1 - фактично надати повний приклад. PS Як ми можемо визначити, що логротат насправді робить для файлів ?
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.