Dmesgにステートメントを書きたいのですが。 [これどうやってするの?
/dev/kmsg
に書き込みます(@ Nils で提案されている/proc/kmsg
ではありません)。カーネル側の実装については、 linux/kernel/printk/printk.c
devkmsg_writev
と systemd/src/journal/journald-kmsg.c
を参照してくださいserver_forward_kmsg
の使用例。
bSD向け
%logger -p kern.crit MESSAGE
(礼儀 Ian、freebsd-questionsメーリングリスト )
linux用
su root -c 'echo MESSAGE > /dev/kmsg'
他の誰もこれを行う公式の方法を考え出さないと仮定すると...
printk
関数を呼び出すカーネルモジュールを作成できます。例があります here それはあなたのためにちょうど仕事をするかもしれません。
man dmesg を正しく理解していれば、/ proc/kmsgに書き込むことができるはずです。
->以下のようにCプログラムを書くことができます:
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");
}
->オブジェクトファイルを作成します。
echo "obj-m := test_mod.o" > Makefile
->次のコマンドを実行してコンパイルします。
make -C /lib/modules/$(Shell uname -r)/build M=$(PWD) modules`
->以下のようにモジュールをロードします。
insmod ./test_mod.ko
出力を参照してください:
dmesg | tail
->アンロードモジュール:
rmmod test_mod.ko