Skip to content
Tiantan
Articles

Registros de data e hora dmesg legíveis por humanos no OpenWRT

On Fevereiro 17, 2021 by admin

A saída de dmesg mostra o número de segundos + milissegundos desde o início do sistema.

[ 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 

P: Como colocar segundos + milissegundos em um formato legível?

Meu dmesg:

[email protected]:/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 

Não será possível instalar o util-Linux, porque não há muito espaço disponível:

[email protected]:~# 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% / 

.

[email protected]:/tmp# which awk perl sed bash sh shell tcsh /usr/bin/awk /bin/sed /bin/sh [email protected]:~# 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 

Comentários

  • O que você chama de ‘ legível ‘ formato?
  • Eu ‘ receio que você ‘ provavelmente esteja fora de sorte, então. Se o seu sistema registrar a saída do kernel em algum tipo de registro (por exemplo, para /var/log/syslog em sistemas Debian, verifique esse registro; ele pode conter as mesmas informações, mas com carimbos de data / hora legíveis .
  • ‘ legível ‘ como humano carimbo de data e hora legível, como você explicou para ‘ -T ‘ arg.
  • Hmm, isso será muito complexo, já que você não ‘ não parece ter acesso a nada com recursos de manipulação de data. Seu comando date não suporta o sinalizador -d, certo? E nenhuma python também, eu acho? Qual awk implementação é essa? É GNU awk pelo menos?
  • Legal, se você tiver date -d, minha resposta atualizada deve funcionar.

Resposta

Acho que o que você está procurando é -T conforme documentado em man dmesg:

-T, –ctime

Imprimir carimbos de data / hora legíveis por humanos. O carimbo de data / hora pode ser impreciso!

A fonte de tempo usada para os registros não é atualizada após SUSPENDER / RETOMAR do sistema.

Então, por exemplo:

[ 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 

Torna-se:

[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 

Encontrei um truque legal aqui . O sed a expressão usada estava errada, pois falharia quando houvesse mais de um ] no dmesg linha. Eu modifiquei para funcionar com todos os casos que encontrei em meu próprio dmesg saída. Portanto, isso deve funcionar assumindo que seu date se comporte conforme o esperado:

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 

A saída se parece com:

[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 

Comentários

  • também podemos adicionar, -T apenas sinalizadores suporte para util-linux-ng-2.20.x e superior, portanto, será compatível com Ubuntu 12.04 e superior e não em CentOS / RHEL 6.3 e inferior
  • I ‘ uso dmesg há anos e só aprendi sobre esse sinalizador agora. Por que ninguém me disse isso? : D
  • @MartinvonWittich mesmo aqui, acabei de ler a página do manual pela primeira vez hoje 🙂
  • desculpe, não ‘ t disse antecipadamente que eu uso openwrt.
  • Apenas para registro: assim como dmesg -T faz, o script na resposta também mostra a hora errada durante a hibernação.

Resposta

sua versão de dmesg obviamente não é completa -encontrou um de util-linux, mas em vez disso é fornecido por busybox.

busybox fornece o básico de uma infinidade de utilitários, mas não fornece todos os seus recursos interessantes.

se você quiser usar o -T sinalizar como (corretamente) sugerido por terdon, você precisará usar o dmesg binário fornecido por util-linux

[email protected]:/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 $ 

Written by admin

Deixe uma resposta Cancelar resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Artigos recentes

  • Usando um balun com um dipolo ressonante
  • Qual é a diferença entre “ cant ” e “ cant ”? [duplicar]
  • No JFK, você pode se mover entre os terminais do lado ar em voos domésticos?
  • “ Muito apreciada ” ou “ muito apreciada ”
  • O que ' ideias abstratas ' significa? [fechado]

Arquivo

  • Fevereiro 2021
  • Janeiro 2021
  • Dezembro 2020
  • Novembro 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top