Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I'd like to write a statement to dmesg. [How] can I do this?

share|improve this question
    
Why do you want to do this? –  Nils Apr 3 '12 at 20:36
2  
Does it matter? :) –  stephelton Apr 3 '12 at 20:38
1  
Two reasons I've wanted to do this before: (1) to see what "now is" in dmesg-timestamp format, and (2) to know when I last looked at dmesg. –  stephelton Apr 3 '12 at 20:39
    
I'm pretty sure now is seconds from boot, and I think it takes a kernel call to write to it so a userland program can't. –  Kevin Apr 3 '12 at 21:22
    
@Kevin, so you know without looking how many seconds have elapsed since you booted? –  stephelton Apr 4 '12 at 1:28
add comment

3 Answers

up vote 14 down vote accepted

Write to /dev/kmsg (not /proc/kmsg as suggested by @Nils). See linux/kernel/printk/printk.c devkmsg_writev for the kernel-side implementation and systemd/src/journal/journald-kmsg.c server_forward_kmsg for an example of usage.

share|improve this answer
add comment

Assuming nobody else comes up with an official way to do this ...

You can write a kernel module that calls the printk function. There's an example here that might just do the job for you.

share|improve this answer
2  
a. No need, others have written it already (e.g. kecho). b. Really no need for an extra module, see my answer. –  ephemient Apr 3 '12 at 21:44
add comment

If I understood man dmesg correctly, you should be able to write to /proc/kmsg.

share|improve this answer
1  
# echo "test" >> /proc/kmsg [yields =>] -su: echo: write error: Input/output error –  stephelton Apr 3 '12 at 20:50
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.