Jak napisać do dmesg z wiersza poleceń?

42

Chciałbym napisać oświadczenie do dmesg. [W jaki sposób mogę to zrobić?

notlesh
źródło
1
Dlaczego chcesz to zrobić?
Nils,
21
Czy to ma znaczenie? :)
notlesh
8
Dwa powody, dla których chciałem to zrobić wcześniej: (1), aby zobaczyć, co „teraz jest” w formacie dmesg-timestamp, i (2), aby wiedzieć, kiedy ostatnio patrzyłem na dmesg.
notlesh
Jestem prawie pewien, że upłynęło nowkilka sekund od rozruchu i myślę, że napisanie do niego wymaga jądra, więc program użytkownika nie może.
Kevin
2
@Kevin, więc wiesz, nie patrząc, ile sekund upłynęło od uruchomienia?
notlesh

Odpowiedzi:

39

Napisz do /dev/kmsg(nie /proc/kmsgzgodnie z sugestią @ Nils ). Zobacz implementację po stronie jądra i przykład użycia.linux/kernel/printk/printk.c devkmsg_writevsystemd/src/journal/journald-kmsg.c server_forward_kmsg

efemeryczny
źródło
To nie jest dozwolone w pewnym systemie dla użytkowników innych niż root. (Np: Android jądra) :-(
pevik
10
Np.date | sudo tee /dev/kmsg
sanmai
2

Zakładając, że nikt inny nie wymyśli oficjalnego sposobu na zrobienie tego ...

Możesz napisać moduł jądra, który wywołuje printkfunkcję. Jest tutaj przykład , który może po prostu wykonać pracę za Ciebie.

ams
źródło
8
za. Nie ma potrzeby, inni już to napisali (np. Kecho ). b. Naprawdę nie potrzebujesz dodatkowego modułu, zobacz moją odpowiedź.
ephemient
-1

Jeśli poprawnie zrozumiałem man dmesg , powinieneś być w stanie pisać do / proc / kmsg .

Nils
źródło
4
# Echo "test" >> / proc / kmsg [plony =>] -su: echo: write error: Błąd wejścia / wyjścia
notlesh