Человекочитаемые dmesg метки времени на OpenWRT

Это также зависит от ОС. Я не знаю определенное объяснение, но испытал различие между поведениями Linux и Unix в этом отношении. Конкретно FreeBSD, Вы CAN cat каталог. Бросил меня от первого раза, когда я попробовал.

22
18.09.2016, 04:31
2 ответа

Я думаю, что то, что Вы ищете, -T как зарегистрировано в man dmesg:

- T, - ctime

Распечатайте человекочитаемые метки времени. Метка времени могла быть неточной!

Источник времени, используемый для журналов, не обновляется после системы ПРИОСТАНАВЛИВАЮТ/ВОЗОБНОВЛЯЮТ.

Так, например:

[  518.511925] usb 2-1.1: new low-speed USB device number 7 using ehci-pci
[  518.615735] usb 2-1.1: New USB device found, idVendor=1c4f, idProduct=0002
[  518.615742] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  518.615747] usb 2-1.1: Product: USB Keykoard

Становится:

[Mon Jan 27 16:22:42 2014] hid-generic 0003:1C4F:0002.0007: input,hidraw0: USB HID v1.10 Keyboard [USB USB Keykoard] on usb-0000:00:1d.0-1.1/input0
[Mon Jan 27 16:22:42 2014] input: USB USB Keykoard as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.1/input/input24
[Mon Jan 27 16:22:42 2014] hid-generic 0003:1C4F:0002.0008: input,hidraw1: USB HID v1.10 Device [USB USB Keykoard] on usb-0000:00:1d.0-1.1/input1

Я нашел прохладный прием здесь. sed выражение, используемое там, было несправедливостью, так как это перестанет работать, когда был больше чем один ] в dmesg строка. Я изменил его для работы со всеми случаями, которые я нашел в своем собственном dmesg вывод. Так, это должно работать, принимая Ваш date ведет себя как ожидалось:

base=$(cut -d '.' -f1 /proc/uptime); 
seconds=$(date +%s); 
dmesg | sed 's/\]//;s/\[//;s/\([^.]\)\.\([^ ]*\)\(.*\)/\1\n\3/' | 
while read first; do 
  read second; 
  first=`date +"%d/%m/%Y %H:%M:%S" --date="@$(($seconds - $base + $first))"`;
  printf "[%s] %s\n" "$first" "$second"; 
done 

Вывод похож:

[27/01/2014 16:14:45] usb 2-1.1: new low-speed USB device number 7 using ehci-pci
[27/01/2014 16:14:45] usb 2-1.1: New USB device found, idVendor=1c4f, idProduct=0002
[27/01/2014 16:14:45] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[27/01/2014 16:14:45] usb 2-1.1: Product: USB Keykoard
30
27.01.2020, 19:42
  • 1
    мы можем также добавить, -T флаги только поддерживают для util-linux-ng-2.20.x и выше, таким образом, это будет поддерживать Ubuntu 12.04 и выше а не в CentOS/RHEL 6.3 и ниже –  Rahul Patil 27.01.2014, 17:58
  • 2
    я использовал dmesg в течение многих лет и я только узнавал об этом флаге теперь. Почему никто не говорил мне это? :D –  Martin von Wittich 27.01.2014, 18:31
  • 3
    @MartinvonWittich то же здесь, я просто прочитал страницу справочника впервые сегодня :) –  terdon♦ 27.01.2014, 18:32
  • 4
    извините, не сделал сказало это заранее, что я использую openwrt. способность –   27.01.2014, 18:51
  • 5
    Только для справки: так же, как dmesg -T делает, сценарий в ответе также показывает, что неправильное время на в спящем режиме. –  Hi-Angel 06.04.2016, 15:00

Ваша версия dmesg очевидно, не законченный от util-linux но вместо этого обеспечивают busybox.

busybox обеспечивает основы множества утилит, но оно не обеспечивает все их изящные функции.

если Вы хотите использовать -T отметьте, как (справедливо) предложено terdon, необходимо будет использовать dmesg двоичный файл, обеспеченный util-linux

me@server:/tmp$ busybox sh
BusyBox v1.21.1 (Debian 1:1.21.0-1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/tmp $ dmesg -T
dmesg: invalid option -- 'T'
BusyBox v1.21.1 (Debian 1:1.21.0-1) 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

/tmp $ /bin/dmesg -T | tail -5
[Mon Jän 27 13:37:24 2014] hid-generic 0003:046D:C03E.0006: input,hidraw2: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.0-1.8/input0
[Mon Jän 27 15:59:32 2014] NVRM: API mismatch: the client has the version 304.117, but
[Mon Jän 27 15:59:32 2014] NVRM: this kernel module has the version 304.116.  Please
[Mon Jän 27 15:59:32 2014] NVRM: make sure that this kernel module and all NVIDIA driver
[Mon Jän 27 15:59:32 2014] NVRM: components have the same version.
/tmp $
5
27.01.2020, 19:42

Теги

Похожие вопросы