desenv-web-rp.com

Como escrever no dmesg na linha de comando?

Eu gostaria de escrever uma declaração para dmesg. [Como posso fazer isso?

49
notlesh

Escrever para /dev/kmsg (não /proc/kmsg como sugerido por @ Nils ). Vejo linux/kernel/printk/printk.cdevkmsg_writev para a implementação do lado do kernel e systemd/src/journal/journald-kmsg.cserver_forward_kmsg para um exemplo de uso.

42
ephemient

para BSDs

%logger -p kern.crit MESSAGE

(cortesia Ian, lista de discussão freebsd-questions )

para Linux

su root -c 'echo MESSAGE > /dev/kmsg'
14
xitij

Supondo que ninguém mais tenha uma maneira oficial de fazer isso ...

Você pode escrever um módulo do kernel que chama a função printk. Há um exemplo aqui que pode apenas fazer o trabalho para você.

3
ams

Se eu entendi man dmesg corretamente, você deve poder escrever para /proc/kmsg .

0
Nils

-> Você pode escrever um programa C como abaixo:

test_mod.c

#include <linux/module.h>
#include <linux/kernel.h>

int init_module(void)
{
    printk("Hello All\n This is a test init\n");
    return 0;
}

void cleanup_module(void)
{
    printk("Good Bye");
}

-> criar arquivo de objeto:

echo "obj-m := test_mod.o" > Makefile

-> compilar executando:

make -C /lib/modules/$(Shell uname -r)/build M=$(PWD) modules`

-> carregue seu módulo como abaixo:

insmod ./test_mod.ko

veja a saída:

dmesg | tail

-> módulo de descarga:

rmmod test_mod.ko
0
Bhavana Johri