Vom Menschen lesbare dmesg-Zeitstempel auf OpenWRT
On Februar 17, 2021 by adminDie Ausgabe von dmesg zeigt die Anzahl der Sekunden + Millisekunden seit dem Systemstart.
[ 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
F: Wie werden die Sekunden + Millisekunden in ein lesbares Format gebracht?
Mein 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
Die Installation von util-Linux ist nicht möglich, da nicht viel Speicherplatz verfügbar ist:
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
Kommentare
- Was bezeichnen Sie als ‚ lesbar ‚ Format?
- Ich ‚ befürchte, dass Sie ‚ wahrscheinlich aus sind Wenn Ihr System die Kernelausgabe in einer Art Protokoll protokolliert (z. B.
/var/log/syslog
auf Debian-Systemen), überprüfen Sie dieses Protokoll. Es enthält möglicherweise dieselben Informationen, jedoch mit lesbaren Zeitstempeln . - ‚ lesbar ‚ als Mensch lesbarer Datums-Zeitstempel, wie Sie für das Argument ‚ -T ‚
- Hmm erklärt haben Sehr komplex, da Sie ‚ anscheinend keinen Zugriff auf irgendetwas mit Datumsmanipulationsfunktionen haben. Ihr Befehl
date
unterstützt das Flag-d
nicht, oder? Und keine Python, denke ich? WELCHEawk
-Implementierung ist dies? Ist es mindestensGNU awk
? - Cool, wenn Sie
date -d
haben, sollte meine aktualisierte Antwort funktionieren.
Antwort
Ich denke, dass Sie -T
wie in man dmesg
dokumentiert:
-T, –ctime
Drucken Vom Menschen lesbare Zeitstempel. Der Zeitstempel ist möglicherweise ungenau!
Die für die Protokolle verwendete Zeitquelle wird nach dem SUSPEND / RESUME des Systems nicht aktualisiert.
Zum Beispiel:
[ 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
Wird:
[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
Ich habe hier einen coolen Trick gefunden Der dort verwendete Ausdruck id = „032e33b7f4“>
war falsch, da er fehlschlagen würde, wenn mehr als ein]
imdmesg
line. Ich habe es so geändert, dass es mit allen Fällen funktioniert, die ich in meinen eigenen gefunden habedmesg
Ausgabe. Dies sollte also funktionieren, vorausgesetzt, Ihredate
verhält sich wie erwartet:
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
Die Ausgabe sieht wie folgt aus:
[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
Kommentare
- Wir können auch hinzufügen,
-T
nur Flags Unterstützung fürutil-linux-ng-2.20.x
und höher, daher wird Ubuntu 12.04 und höher unterstützt und nicht in CentOS / RHEL 6.3 und niedriger - I ‚ Ich benutze
dmesg
seit Jahren und habe erst jetzt von dieser Flagge erfahren. Warum hat mir das niemand gesagt? : D - @MartinvonWittich hier, ich habe heute gerade zum ersten Mal die Manpage gelesen 🙂
- Entschuldigung, nicht ‚ t sagte dies im Voraus, dass ich openwrt verwende.
- Nur zur Veranschaulichung: Genau wie
dmesg -T
zeigt das Skript in der Antwort auch im Ruhezustand eine falsche Zeit an.
Antwort
Ihre Version von dmesg
ist offensichtlich nicht vollständig -fledged one von util-linux
, wird aber stattdessen von busybox
bereitgestellt.
busybox
bietet die Grundlagen einer Vielzahl von Dienstprogrammen, bietet jedoch nicht alle nützlichen Funktionen.
, wenn Sie die -Flag, wie von Terdon (zu Recht) vorgeschlagen, müssen Sie die dmesg
-Binärdatei verwenden, die von 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 $
Schreibe einen Kommentar