Так, є правильний спосіб: ви зовсім не очищаєте журнали. Ви обертаєте їх. Обертання включає перемикання виходу журналу в новий файл під тим самим ім'ям, при цьому попередні N файлів журналу зберігаються під набором N пов'язаних імен файлів.
Те, як обертаються журнали, залежить від того, як їх записувати в першу чергу. Це часто недооцінений момент. Деякі відповіді тут торкаються принаймні, згадуючи, що деякі програми реєстрації зберігають відкритий дескриптор файлу журналу, тому просто видалення файлу не звільнить простір, а то й навіть переключить вихід на новий файл журналу.
Наприклад, якщо програма, що записує файл журналу, виходить multilog
із daemontools
пакета , тоді ви взагалі нічого не робите для повороту журналів - жодних сценаріїв вручну, жодних cron
завдань. Просто скажіть, multilog
що вихід журналу - це каталог, і він сам підтримуватиме автоматично повернутий і обмежений розмір набір файлів N журналів у цьому каталозі.
Якщо програма, що записує файли журналів, йде svlogd
з runit
пакету , для іншого прикладу, то багато іншого стосується і того ж. Ви нічого не робите, окрім того, як навести інструмент на каталог. Він сам буде підтримувати автоматично повернутий і обмежений розмір набір N файлів журналів у цьому каталозі.
Якщо ви використовуєте rsyslog
для запису файлів журналів, програму реєстрації можна сказати припинити після того, як файл журналу досягне певного розміру та запустить сценарій . Ви повинні написати м'ясо сценарію, щоб фактично перейменувати файл журналу та видалити старі файли журналів на основі обмежень загального розміру, але принаймні програма реєстрації закрила файл і призупинила запис журналу, поки це відбувається.
Старий syslogd
спосіб повороту журналів, який все ще очікується при реєстрації таких програм, як syslog-ng та як приклади таких інструментів, про які logrotate
йдеться djangofan
в іншій відповіді тут, є дещо більш небезпечним. Один запускає cron
завдання, яке періодично перейменовує файли журналів, і перезапускає демон-журнал (використовуючи будь-який керівник демона, під яким він працює). Проблема з цим, звичайно, полягає в тому, що він не застосовує обмеження загального розміру. На повільних тижнях можна отримати N дуже малих щоденних файлів журналу, тоді як у напружені дні можна отримати 1 дуже великий файл журналу, що значно перевищує обмеження розміру.
Тому пізніше і більш досконалі інструменти , як multilog
і svlogd
мають параметри конфігурації розмір файлу і на самому ділі перевірити файл журналу розміри себе, звичайно. Світ дізнався, що опитування журналів за графіком із cron
завданнями або навіть logrotate
демон, залишає вікна, щоб розмір був невірним, і що належне місце для цих перевірок, і настільки жорстко застосовувати обмежені розміри, визначені адміністратором, щоб Файли журналу ніколи не ковтають розділ, на якому вони перебувають, - це програма, яка насправді виписує файли в першу чергу.