Очищення файлів журналів під Linux


10

Я використовую віртуальну машину kvm ubuntu 10.04 для тестування деяких особливостей модуля ядра. Я проглядаю /var/logфайли, щоб побачити повідомлення ядра про цей модуль.

Щоб почати з чистого стану, видаляю файли журналів, що містять старіші повідомлення, виконуючи, rm -rf /var/log/*а потім перезавантажуючи віртуальну машину. Однак після перезавантаження нові файли журналів все ще містять ті старі повідомлення журналу. Видалення файлів та перезавантаження віртуальної машини потребує приблизно 5-6 циклів, щоб остаточно позбутися цих повідомлень файлів журналу.

Чому це відбувається? Чи є простіший спосіб очищення журнальних файлів?


logrotateє офіційним програмним забезпеченням Linux щодо видалення та обертання журналів автоматично.
Ханан Н.

Я не хотів обертатись. Просто витріть їх.
розглядаючи

1
Наступне, здається, працює для мене: 1. rm -rf / var / log / * 2. dmesg -c 3. перезавантажити Оскільки це працює, я думаю, що ядро ​​читає попередні повідомлення журналу під час завантаження, зберігає їх у буфері і записує їх до файлів ще раз під час перезавантаження. Якщо хтось більше знає про фактичний механізм, будь ласка, оновіть.
розглядаючи

Відповіді:


7

Найпростіший спосіб очищення старих колод - це не їх видалення.

Найкращий спосіб очищення журналів - це, logrotateяк Ханан Н. Вказано, або:

find /var/log -type f -exec /bin/cp /dev/null {} \;

для кожного файлу журналу. Я не точно впевнений, на які записи журналу ви посилаєтесь з попереднього завантаження, але якщо ви хочете, щоб це очистилося після завантаження, ви можете поставити команду вище в /etc/rc.localскрипт, щоб весь журнал був призначений після завантаження.

Зазвичай, хоча ви не хочете очищати журнали, оскільки вони є відправною точкою у вирішенні неполадок.


Я думаю, що команда 'cp' скопіювала б усі журнали за останнім розширеним іменем файлу ... можливо, ви мали на увазі find /var/log/* -exec cp /dev/null {} \;:?
jjmontes

@jjmontes Дякую Я тоді не міг придумати команду find. :) Але насправді це було б змінено так, як я редагував
Карлсон

3

Для того, що ви робите, може бути краще додати додатковий файл журналу для повідомлень ядра. Деякі демони журналу дозволять виконувати збіги за записаними записами, щоб ви отримали лише відповідні записи у вашому файлі. Потім можна обертати, видаляти або перейменовувати файли між прогонами. (Якщо ви не перезавантажуєтесь, вам, можливо, доведеться надіслати сигнал прототипу HUP, щоб отримати його для повторного відкриття файлів.

Також є інструменти, які витягують з журналу лише нові записи. logtailУтиліта з logcheckпакета один з таких утиліт. Його можна запустити за допомогою альтернативного файлу зміщення.

Є й інші інструменти, які переглядають журнали для записів, що відповідають шаблону, та звітують про них. Одне з них може спрацювати для вас.


1

Схоже, це працює добре (на Ubuntu LTS 14.04), повертаючи ваші журнали до чистого журналу та видаляючи старі записи журналу. Це схоже на метод cp / dev / null, але я думаю, що він чистіший. ymmv

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.