Date
dmesg:自定義時間格式
dmesg
可以選擇-T
列印人類可讀的時間戳,新版本有選項--time-format
,可以更改時間格式,例如:--time-format iso
不幸的是,
iso
時間格式也不太可讀。我可以使用標準date
語法定義自己的時間格式嗎?IE:date +%F-%T
gawk
是的,您可以,例如通過使用(GNU )重新格式化時間,awk
如下所示:dmesg --time-format iso | gawk '{ printf (strftime("+%F-%T",mktime(gensub("[-+T:,]"," ","g",$1)))) ; $1 = ""; print $0}'
dmesg
在這裡列印 iso 日期,如下所示:2019-09-02T06:10:30,708864+02:00 this is an important message
我們去除第一個特殊字元字元串,然後使用( )中的
mktime
函式將字元串解析為日期,然後格式化 - 使用您喜歡的參數。g``awk``strftime
這給出了類似的東西
+2019-09-02-06:10:30 this is an important message
小筆記:
- 我們在這裡忽略時區,假設這很明顯,因為我們在本地執行命令。
- 請注意,
dmesg
由於時間戳的儲存方式,如果您掛起然後喚醒電腦,則給出的時間可能不准確(實際上,有時會偏離),請參閱dmesg(1)
:man 1 dmesg
你不能,但你可以解析
dmesg
-output:dmesg --time-format iso \ | while read datestring rest; do \ printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done