Действительно ли возможно отфильтровать дублирующиеся строки из системного журнала?

Я не понимаю, почему Вы думаете, что необходимо переустановить Linux (или Windows, в этом отношении). У Вас, кажется, была неудача, что потери мощности посреди обновления сделали Вашу установку Linux неприменимой (или по крайней мере не легко применимые), но это не означает, что это не восстанавливаемо.

Самый легкий способ восстановиться состоял бы в том, чтобы загрузиться с живого CD или диска USB (предпочтительно из Ubuntu 10.04, хотя любой достаточно недавний Linux должен работать). (Вероятно, возможно восстановить Вашу установку путем начальной загрузки его конкретным способом, но живой подход CD немного легче.) Следующие команды предполагают, что у Вас есть оболочка (командная строка), работающая как корень (администратор).

  • Если у Вас есть интерфейс, который предлагает монтировать Вашу существующую установку Linux, сделайте то, что она говорит Вам. Иначе сделайте это вручную: использовать fdisk -l видеть, какие разделы Вы имеете и определяете местоположение системного раздела. Смонтируйте его к некоторому месту. Также смонтируйте procfs и sysfs под ним. Например, если Ваш раздел Linux идет /dev/sda99, выполненный

    mkdir /media/linux
    mount /dev/sda99 /media/linux
    mount -t proc proc /media/linux/proc
    mount -t sysfs sysfs /media/linux/sys
    
  • Запустите “подсессию” в установке Linux с chroot:

    chroot /media/linux
    
  • У Вас должна теперь быть оболочка в Вашей установке Linux. Выполненный apt-get install или dpkg --configure -a продолжать обновление. (Иногда выполняющий эти команды несколько раз может избавиться от ошибок или по крайней мере позволить большому количеству вещей прогресс, даже если несколько пакетов заблокированы ошибкой.) Возможно, что катастрофический отказ оставил систему в состоянии, где те команды не достаточно; если так, спросите снова, сообщив о сообщениях об ошибках, которые Вы видите.

Обратите внимание, что я не рекомендую получить доступ к Вашему разделу Linux из Windows, если цель состоит в том, чтобы извлечь важные данные. Инструменты Windows для доступа к файловой системе Linux не полностью надежны, особенно если файловая система не была размонтирована чисто.

3
23.09.2012, 05:44
2 ответа

системный журнал автоматически разделяет дублирующиеся строки, но здесь они не дубликат, потому что ядро вставляет метку времени (в микросекундах начиная с начальной загрузки) прежде, чем отправить к системному журналу.

Та метка времени может выглядеть избыточной начиная с меток времени системного журнала журналы также, но это и его гранулярность могут быть полезны в отладке проблем ядра (потому что метки времени системного журнала менее точны и может быть задержка между фактическим событием и системным журналом, штампующим его, и потому что в случаях где системный журнал или /var не стали, хорошо видеть метки времени в dmesg вывод).

Можно отключить те метки времени kmsg путем выполнения:

echo N | sudo tee /sys/module/printk/parameters/time

Или сделайте это постоянным путем конфигурирования загрузчика для передачи printk.time=N к командной строке ядра Linux.

6
27.01.2020, 21:10
  • 1
    Другая возможность состояла бы в том, чтобы иметь полосу программного обеспечения системного журнала метка времени printk из сообщения. Тем путем это все еще будет доступно в dmesg, но при входе через системный журнал дубликаты будут очищены. Я знаю, что системный-журнал-ng может/, делают это, не знайте о rsyslog. –  Patrick 23.09.2012, 20:44

комментарий phunehehe совершенно правилен:

  1. Необходимо решить проблему драйвера сначала.
  2. Если Вы не можете, Ваша проблема быть большими файлами журнала, поэтому зафиксируйте это с logrotate.
  3. Если Вы все еще отфильтровали бы эти строки:

На основе Вашего другого вопроса я предполагаю, что это - машина Ubuntu, в этом случае он, вероятно, выполняет rsyslog (или можно установить его). Попробовать ps aux | grep syslog видеть.

rsyslog позволяет Вам фильтровать строки с основанными на свойстве фильтрами. Например, фильтры могут быть соответствиями литеральной строки или regexes. Пример из документов:

:msg, contains, "error" ~

'~' указывает, что это сообщение должно быть отброшено. Таким образом, Вы могли легко записать один из них для завершенного подавления сообщений от ошибочного драйвера. Обратите внимание, что это технически не удаляет дубликаты: не будет никаких строк с этой зарегистрированной ошибкой.

4
27.01.2020, 21:10

Теги

Похожие вопросы