Horodatage dmesg lisible par lhomme sur OpenWRT
On février 17, 2021 by adminLa sortie de dmesg montre le nombre de secondes + millisecondes depuis le démarrage du système.
[ 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: Comment mettre les secondes + millisecondes dans un format lisible?
Mon 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
Installer util-Linux ne sera pas possible, car il ny a pas beaucoup despace disponible:
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
Commentaires
Réponse
Je pense que ce que vous « cherchez est -T
comme documenté dans man dmesg
:
-T, –ctime
Imprimer horodatages lisibles par lhomme. Lhorodatage peut être inexact!
La source de temps utilisée pour les journaux nest pas mise à jour après le SUSPEND / RESUME du système.
Par exemple:
[ 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
Devient:
[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
Jai trouvé un truc sympa ici . Le sed
lexpression utilisée était erronée car elle échouait lorsquil y avait plus dun ]
dans le dmesg
ligne. Je lai modifiée pour quelle fonctionne avec tous les cas que jai trouvés dans le mien dmesg
sortie. Donc, cela devrait fonctionner en supposant que votre date
se comporte comme prévu:
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
Le résultat ressemble à:
[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
Commentaires
- nous pouvons également ajouter des indicateurs
-T
uniquement prise en charge deutil-linux-ng-2.20.x
et supérieur, il prendra donc en charge Ubuntu 12.04 et supérieur et non dans CentOS / RHEL 6.3 et inférieur - I ‘ jutilise
dmesg
depuis des années et je nai appris lexistence de cet indicateur que maintenant. Pourquoi personne ne ma dit ça? : D - @MartinvonWittich même ici, je viens de lire la page de manuel pour la première fois aujourdhui 🙂
- désolé, didn ‘ t Jai dit cela à lavance que jutilise openwrt.
- Juste pour mémoire: tout comme
dmesg -T
le fait, le script dans la réponse indique également une mauvaise heure lors de la mise en veille prolongée.
Réponse
votre version de dmesg
nest évidemment pas complète -fledged one from util-linux
mais est fourni à la place par busybox
.
busybox
fournit les bases dune multitude dutilitaires, mais il ne fournit pas toutes leurs fonctionnalités intéressantes.
si vous souhaitez utiliser le -T
comme (à juste titre) suggéré par terdon, vous devrez utiliser le binaire dmesg
fourni par 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 $
/var/log/syslog
sur les systèmes Debian, vérifiez ce journal; il peut contenir les mêmes informations mais avec des horodatages lisibles .date
ne prend pas en charge lindicateur-d
, nest-ce pas? Et pas de python non plus je suppose? De quelleawk
implémentation sagit-il? Est-ceGNU awk
au moins?date -d
, ma réponse mise à jour devrait fonctionner.