日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dmesg时间转换工具

發(fā)布時(shí)間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dmesg时间转换工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在排查一個(gè)core問題,對dmesg的時(shí)間戳,做了一個(gè)轉(zhuǎn)化工具:ts_dmesg.sh

借助awk 和shell實(shí)現(xiàn):

[python]?view plaincopy
  • #!/bin/sh??
  • ??
  • uptime_ts=`cat?/proc/uptime?|?awk?'{?print?$1}'`??
  • #echo?$uptime_ts??
  • dmesg?|?awk?-v?uptime_ts=$uptime_ts?'BEGIN?{??
  • ????now_ts?=?systime();??
  • ????start_ts?=?now_ts?-?uptime_ts;??
  • ????#print?"system?start?time?seconds:",?start_ts;??
  • ????#print?"system?start?time:",?strftime("[%Y/%m/%d?%H:%M:%S]",?start_ts);??
  • ?}??
  • {??
  • ????print?strftime("[%Y/%m/%d?%H:%M:%S]",?start_ts?+?substr($1,?2,?length($1)?-?2)),?$0??
  • }'??



  • 關(guān)于dmesg的原始時(shí)間戳,是系統(tǒng)的產(chǎn)生mesg的系統(tǒng)uptime時(shí)間,故需要獲取系統(tǒng)的啟動時(shí)間;


    關(guān)于系統(tǒng)uptime時(shí)間:

    /proc/uptime詳解

    在Linux中,我們常常會使用到uptime命令去看看系統(tǒng)的運(yùn)行時(shí)間,它與一個(gè)文件有關(guān),就是/proc/uptime,下面對其進(jìn)行詳細(xì)介紹。

    [python]?view plaincopy
  • wzb@scala:~$?cat?/proc/uptime??
  • 6447032.12?48185264.69??
  • wzb@scala~$?cat?/proc/cpuinfo??|?grep?processor?|?wc?-l??
  • 8??

  • 第一列輸出的是,系統(tǒng)啟動到現(xiàn)在的時(shí)間(以秒為單位),這里簡記為num1;
    第二列輸出的是,系統(tǒng)空閑的時(shí)間(以秒為單位), ? ? ? ? ?這里簡記為num2。

    注意,很多很多人都知道第二個(gè)是系統(tǒng)空閑的時(shí)間,

    但是可能你不知道是,在SMP系統(tǒng)里,系統(tǒng)空閑的時(shí)間有時(shí)會是系統(tǒng)運(yùn)行時(shí)間的幾倍,這是怎么回事呢?
    因?yàn)橄到y(tǒng)空閑時(shí)間的計(jì)算,是把SMP算進(jìn)去的,就是所你有幾個(gè)邏輯的CPU(包括超線程)。

    系統(tǒng)的空閑率(%) = num2/(num1*N) ?#其中N是SMP系統(tǒng)中的CPU個(gè)數(shù)。

    從上面我的一臺機(jī)器上的數(shù)據(jù)可知,
    本機(jī)啟動到現(xiàn)在的時(shí)間長度為:6447032.12 seconds = 74.6 days
    空閑率為:48185264.69/(6447032.12*8)=93.4%

    系統(tǒng)空閑率越大,說明系統(tǒng)比較閑,可以加重一些負(fù)載;

    而系統(tǒng)空閑率很小,則可能考慮升級本機(jī)器硬件或者遷移部分負(fù)載到其他機(jī)器上。

    Some docs from Redhat:
    The first number is the total number of seconds the system has been up.?

    The second number is how much of that time the machine has spent idle, in seconds. ?(Jay’s comments: Please pay attention to SMP system.)

    linux時(shí)間戳轉(zhuǎn)換

    1. 將日期轉(zhuǎn)換成時(shí)間戳 $date +%s -d "04/24/2014 15:30:00"1398324600 2. 將時(shí)間戳轉(zhuǎn)換成日期 $date -d @1398324600Thu Apr 24 15:30:00 CST 2014 3. 將當(dāng)前日期轉(zhuǎn)換成時(shí)間戳 $date +%s1398765730

    dmesg 時(shí)間轉(zhuǎn)換

    dmesg 輸出的格式不易查看,可以通過命令進(jìn)行轉(zhuǎn)換。

    記錄如下:

    時(shí)間查看:

    date -d "1970-01-01 UTC `echo "$(date +%s)-$(cat /proc/uptime|cut -f 1 -d' ')+12288812.926194"|bc ` seconds"

    將系統(tǒng)的相對系統(tǒng)啟動的時(shí)間戳轉(zhuǎn)化為絕對時(shí)間:

    dc.sh:

    [python]?view plaincopy
  • #!/bin/sh??
  • ??
  • #related_ts=$1??
  • ??
  • while?read??related_ts;?do??
  • ????#date?-d?"1970-01-01?UTC?`echo?"$(date?+%s)?-?$(cat?/proc/uptime|cut?-f?1?-d'?')?+?$related_ts"?|?bc?`?seconds"??
  • ????#date?-d?@`echo?"$(date?+%s)?-?$(cat?/proc/uptime|cut?-f?1?-d'?')?+?$related_ts"?|?bc?`??
  • ????/bin/date?+"[%Y/%m/%d?%H:%M:%S]"?-d@`echo?"$(date?+%s)?-?$(cat?/proc/uptime?|?cut?-f?1?-d'?')?+?$related_ts"?|?bc?`??
  • done??
  • 總結(jié)

    以上是生活随笔為你收集整理的dmesg时间转换工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。