On Fri, Dec 19, 2025 at 1:38 PM Jamie Landeg-Jones <[email protected]> wrote:
> void <[email protected]> wrote: > > > Hi, > > > > In /etc/sysctl.conf I have > > > > kern.msgbuf_show_timestamp=1 > > > > and so dmsg has things like > > > > [1353919] swp_pager_getswapspace(32): failed > > > > the [1353919] I guess being the timestamp. > > > > But what is it? > > > > Seconds since boot? > > > > If it's that, then where can the true boot time be > > found? > > Yes! You can get the value from sysctl kern.boottime. > > Here is a small program I wrote a while back, just call it > as a dmesg substitute. > > It uses gawk because of strftime, but now that native awk handles strftime, > it could be converted to use that (gensub will have to be modified) > > gawk is in lang/gawk > > Incidentally, if you put the kern.msgbuf_show_timestamp=1 > in boot/loader.conf instead, it starts much earlier in the boot process, > useful if you are anal about the format of bootup dmesg output! > > Cheers, Jamie > > #!/bin/sh -efu > set -efu > > boottime="$(/sbin/sysctl -n kern.boottime | /usr/local/bin/gawk '{printf > "%d", gensub ("^.* sec = ([1-9][0-9]*), .*$", "\\1", 1)}')" > > [ -z "$(printf '%s' "$boottime" | /usr/bin/egrep '^0$|^[1-9][0-9]*$')" ] > && { printf 'Invalid boottime retrieved.\n' >& 2; exit 1; } > > /sbin/dmesg "$@" | /usr/local/bin/gawk -v boottime="$boottime" ' > > { > uptime = gensub ("^\\[([1-9][0-9]*)\\] .*$", "\\1", 1) > if (uptime == $0) realtime = "??? ?? ??:??;??" > else realtime = strftime ("%b %d %T", uptime + boottime) > > print realtime " " $0 > }' > Very cool! Warner
