Просто зробіть це @ # $% ing роботою
- Ви хочете друкувати вихід dmesg постійно, негайно
- Dmesg друкує буфер кільця ядра (див.
man dmesg
)
- Буфер кільця ядра - це спеціальний файл proc
/proc/kmsg
(див. man proc
)
- Читайте
/proc/kmsg
безпосередньо, тобто cat /proc/kmsg
.
Тепер, якщо ви прочитаєте посібник з дружнього протоколу, він суворо попередить вас одночасно читати лише одного користувача (який повинен мати пільги) /proc/kmsg
. Якою б не була реалізація syslog, і, мабуть, це працює dmesg
. Я не знаю, я не в своїй лізі тут, лише перефразовуючи посібник. Тому, хоча це спосіб "просто зробити це @ # $% ing робота", спочатку розглянемо наступні пара методів.
Сторінка чоловіка затверджена: watch + dmesg
У Arch gnu / linux з systemd init *, dmesg.log пишеться не дуже часто, можливо, зовсім не? Найкращий спосіб, з якого я знайшов читати буфер журналу ядра, - це за допомогою watch
. Щось подібне повинно розпочати роботу (налаштуйте кількість ліній, що вміщуються у вашому терміналі):
watch 'dmesg | tail -50'
дивитися + dmesg + демон + хвіст -f
Більш скрутне рішення може використовувати годинник для запису виводу dmesg у файл, який ви могли б потім tail -f
. Ви, мабуть, хочете, щоб це працювало як демон. Належний демон також може створювати та обертати журнали. Наступний код bash є неперевіреним, непрацюючим і призначений лише для передачі ідеї. @Brooks Відповідь Мойсея має робочу версію .
watch 'dmesg >> /var/log/dmesg.log | tail -1'
* дотична, тому що це питання для OSX, але коли systemd є навколо, не турбуйтеся dmesg
, використовуйте journalctl -xf
(можливо, w / -n 100
щоб також показати попередні 100 рядків)