I wonder (other than the features requiring kernel 3.5) what dependencies dmesg has - could I just carry a static binary around in my ~/bin for systems that don't have a new util-linux?
On systems that have been up a long time or that spew lots of kernel messages, running dmesg might not give you everything (i.e. just a buffer of the last X messages), you can typically find a complete dmesg log in /var/log/dmesg, which should have a complete dmesg log from boot. I use dmesg a lot, for debugging issue, check if drivers have been loaded, kernel messages, like ops or oom, etc. Very handy!
I was kinda hoping to get a description of what dmesg actually is/does...but it's mostly about customizing the output. I could search for it of course, but it was a bit of a surprise to not see any intro to it.
I've been using dmesg for awhile on Arch to debug USB devices mostly, without any clue to what it actually is.
dmesg reads and displays the contents of /proc/kmsg. /proc/kmsg is an interface to a buffer where the output from calls to printk is stored. printk is the linux kernel's equivalent of libc's printf function.
From the release notes:
2.20: supports new command line options: --clear, --console-on, --console-off, --ctime, --decode, --facility=<list>, --level=<list>, --show-delta, --notime, --kernel and --userspace
2.21: supports new command line options --file to read the log from a file rather than from kernel buffer
2.22:
- reads kernel messages from /dev/kmsg on kernel 3.5
- supports new option --follow to wait for new messages (kernel 3.5 required)
- supports new option --reltime to print human readable deltas
2.23: supports new command line options --color, --human and --nopager, the --human option enables relative times, colors and pager support.