Вывод dmesg показывает количество секунд + миллисекунд с момента запуска системы.
[ 10.470000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 14.610000] device eth0 entered promiscuous mode
[ 18.750000] cfg80211: Calling CRDA for country: DE
[ 18.750000] cfg80211: Regulatory domain changed to country: DE
Q: Как поместить секунды + миллисекунды в читаемый формат?
Мой dmesg:
root@OpenWrt:/tmp# dmesg -h
dmesg: invalid option -- h
BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) multi-call binary.
Usage: dmesg [-c] [-n LEVEL] [-s SIZE]
Print or control the kernel ring buffer
-c Clear ring buffer after printing
-n LEVEL Set console logging level
-s SIZE Buffer size
Установить util-Linux будет невозможно, потому что там не так много свободного места:
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 1.1M 956.0K 132.0K 88% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 14.3M 688.0K 13.6M 5% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock3 1.1M 956.0K 132.0K 88% /overlay
overlayfs:/overlay 1.1M 956.0K 132.0K 88% /
,
root@OpenWrt:/tmp# which awk perl sed bash sh shell tcsh
/usr/bin/awk
/bin/sed
/bin/sh
root@OpenWrt:~# date -h
date: invalid option -- h
BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) multi-call binary.
Usage: date [OPTIONS] [+FMT] [TIME]
Display time (using +FMT), or set time
[-s,--set] TIME Set time to TIME
-u,--utc Work in UTC (don't convert to local time)
-R,--rfc-2822 Output RFC-2822 compliant date string
-I[SPEC] Output ISO-8601 compliant date string
SPEC='date' (default) for date only,
'hours', 'minutes', or 'seconds' for date and
time to the indicated precision
-r,--reference FILE Display last modification time of FILE
-d,--date TIME Display TIME, not 'now'
-D FMT Use FMT for -d TIME conversion
-k Set Kernel timezone from localtime and exit
/var/log/syslog
системах Debian, проверьте этот журнал; он может содержать ту же информацию, но с читаемыми временными метками.date
команда не поддерживает-d
флаг, верно? И нет питона, я думаю? Какаяawk
реализация это? ЭтоGNU awk
по крайней мере?date -d
, мой обновленный ответ должен работать.Ответы:
Я думаю, что то, что вы ищете,
-T
описано вman dmesg
:Так, например:
становится:
Я нашел классный трюк здесь . Используемое здесь
sed
выражение было неверным, так как оно потерпело неудачу, если]
вdmesg
строке было больше одного . Я изменил его для работы со всеми делами, которые я нашел в своем собственномdmesg
выводе. Итак, это должно работать, если выdate
ведете себя так, как ожидалось:Вывод выглядит так:
источник
-T
флаги поддерживают толькоutil-linux-ng-2.20.x
и выше, поэтому он будет поддерживать Ubuntu 12.04 и выше, а не в CentOS / RHEL 6.3 и нижеdmesg
течение многих лет, и я только узнал об этом флаге сейчас. Почему никто не сказал мне это? : Ddmesg -T
и в сценарии в ответе также отображается неверное время при переходе в спящий режим.Ваша версия,
dmesg
очевидно, не является полноценной,util-linux
а предоставленаbusybox
.busybox
предоставляет основы множества утилит, но не предоставляет всех их изящных функций.если вы хотите использовать
-T
флаг как (правильно) предложенный terdon, вам нужно будет использоватьdmesg
двоичный файл, предоставленныйutil-linux
источник