Як я можу записати в dmesg з командного рядка?


42

Я хотів би написати заяву в dmesg. [Як] я можу це зробити?


1
Чому ти хочеш це робити?
Нілс

21
Це важливо? :)
notlesh

8
Дві причини, які я хотів зробити це раніше: (1), щоб побачити, що "зараз є" у форматі dmesg-timetamp, і (2) знати, коли я востаннє дивився на dmesg.
нотлеш

Я впевнений, що nowце секунди від завантаження, і я думаю, що для запису в нього потрібне дзвінок ядра, щоб програма userland не могла.
Кевін

2
@Kevin, ти знаєш, не дивлячись, скільки секунд минуло з часу завантаження?
Нотлеш

Відповіді:


39

Пишіть на /dev/kmsg(не так, /proc/kmsgяк запропонував @ Nils ). Дивіться про реалізацію на стороні ядра та приклад використання.linux/kernel/printk/printk.c devkmsg_writevsystemd/src/journal/journald-kmsg.c server_forward_kmsg


Це заборонено в деяких системах для некорінних користувачів (наприклад: Android ядро) :-(.
pevik

10
Напр.date | sudo tee /dev/kmsg
sanmai


2

Якщо припустити, що ніхто інший не придумає офіційного способу зробити це ...

Ви можете написати модуль ядра, який викликає printkфункцію. Там приклад тут , які могли б просто зробити всю роботу за вас.


8
а. Не потрібно, інші це вже написали (наприклад, кечо ). б. Дійсно не потрібно додаткового модуля, дивіться мою відповідь.
ефемія

-1

Якщо я правильно зрозумів man dmesg , ви повинні мати можливість писати в / proc / kmsg .


4
# echo "test" >> / proc / kmsg [yieds =>] -su: echo: помилка запису: помилка вводу / виводу
notlesh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.