OpenWRT पर मानव पठनीय dmesg समय टिकटों


21

सिस्टम शुरू होने के बाद से 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

प्रश्न: सेकंड + मिलीसेकंड को एक पठनीय प्रारूप में कैसे रखा जाए?

मेरा धर्मगुरू:

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

उपयोग-लिनक्स स्थापित करने के लिए संभव नहीं होगा, क्योंकि बहुत अधिक स्थान उपलब्ध नहीं है:

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डेबियन सिस्टम पर, तो उस लॉग की जांच करें; इसमें समान जानकारी हो सकती है लेकिन पठनीय टाइमस्टैम्प के साथ।
मार्टिन वॉन विटिच

1
'पठनीय' मानव पठनीय तिथि समय स्टैम्प के रूप में, जैसे आपने '-T' आर्ग के लिए समझाया।

1
हम्म, यह बहुत जटिल होगा क्योंकि आप तारीख हेरफेर क्षमताओं के साथ किसी भी चीज तक पहुंच नहीं पाते हैं। आपकी dateआज्ञा -dध्वज का समर्थन नहीं करती है , है ना? और कोई अजगर मुझे लगता है? यह कौन सा awkकार्यान्वयन है? यह GNU awkकम से कम है?
terdon

1
कूल, अगर आपके पास है date -d, तो मेरा अद्यतन जवाब काम करना चाहिए।
terdon

जवाबों:


29

मुझे लगता है कि आप जिस चीज की तलाश कर रहे हैं, वह इस -Tप्रकार है man dmesg:

-टी, - समयसीमा

मानव पठनीय टाइमस्टैम्प प्रिंट करें। टाइमस्टैम्प गलत हो सकता है!

लॉग के लिए उपयोग किए जाने वाले समय स्रोत को सिस्टम SUSPEND / RESUME के ​​बाद अपडेट नहीं किया जाता है।

इसलिए, उदाहरण के लिए:

[  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

हम जोड़ सकते हैं, -Tझंडे केवल util-linux-ng-2.20.xऔर अधिक के लिए समर्थन करते हैं , इसलिए यह उबंटू 12.04 और उच्चतर का समर्थन करेगा और CentOS / RHEL 6.3 और इससे कम में नहीं
राहुल पाटिल

3
मैं dmesgवर्षों से उपयोग कर रहा हूं और मैंने केवल इस ध्वज के बारे में सीखा है। मुझे किसी ने क्यों नहीं बताया? : डी
मार्टिन वॉन विटिच

1
@MartinvonWittich यहाँ एक ही है, मैं तो बस आदमी पेज पहली बार आज :) के लिए पढ़ा
terdon

क्षमा करें, यह पहले से नहीं कहा था कि मैं ओपनर का उपयोग करता हूं।

सिर्फ रिकॉर्ड के लिए: बस के रूप dmesg -Tमें, जवाब में स्क्रिप्ट भी हाइबरनेट पर गलत समय दिखाता है।
हाय-एंजेल

4

आपका संस्करण dmesgस्पष्ट रूप से पूर्ण-से-पूर्ण नहीं है, util-linuxबल्कि इसके द्वारा प्रदान किया गया है busybox

busyboxउपयोगिताओं की एक भीड़ की मूल बातें प्रदान करता है , लेकिन यह उनके सभी निफ्टी सुविधाएँ प्रदान नहीं करता है।

यदि आप -Tटेर्डन द्वारा सुझाए गए (सही) ध्वज का उपयोग करना चाहते हैं , तो आपको दिए गए 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 $
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.