4

cat /proc/kmsg - это удобный способ следить за сообщениями ядра. Но вывод ненадежен. Пример:

< eoyfl-o-ilF ilaltssI hwflssesJ a hwbctaealatv-psL hwmmr-sg()nc-l-TtssN oeOfso-eitr()so-l-iesQ na ycso-aksae()Umutfref()so-lce-ak()Wiet_e_yr upfrc-ufrZ <6>[640655.817496] SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount force-fb(V) show-blocked-tasks(W) Write_to_dev_sysrq dump-ftrace-buffer(Z)

(Я нажимал Alt+Sysrq+h трижды: первый раз он печатал битый текст без перевода строки. Второй раз он напечатал правильный текст. В третий раз он только что вышел (EOF).

Что я делаю неправильно? Как следить за сообщениями ядра (вне зависимости от различных файлов sysklogd и config и tail -f).

В качестве альтернативы, как использовать klogd, чтобы просто печатать сообщения (например, cat /proc/kmsg но правильные) без каких-либо системных журналов или klogd: Already running)?

2 ответа2

2

Кажется, что вывод cat /proc/kmsg искажен, потому что могут быть другие потребители данных регистрации ядра, такие как syslogd и friends. Для меня выходные символы чередуются с cat или syslogd (пробовал в Ubuntu 12.04). Смотрите также этот ответ: https://stackoverflow.com/a/9477776/496009

Я могу себе представить, что cat /proc/kmsg будет надежно работать при загрузке в нетронутую систему (например, ядро загружается с аргументом init=/bin/sh ). В противном случае использование команды dmesg для чтения журнала ядра, как ожидается, будет проще.

0

У меня была проблема с преждевременным выходом cat /proc/kmsg из-за того, что он пытался отобразить непечатные символы

Я обнаружил, что:

cat -v /proc/kmsg

удаляет все непечатаемые символы из вывода и предотвращает преждевременный выход cat .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .