dmesg:カスタム時間形式

dmesg:カスタム時間形式

dmesg-T人が読めるタイムスタンプを印刷するオプションがあり、新しいバージョンには--time-format時間形式を変更するオプションがあります。たとえば、次のようになります。

--time-format iso

残念ながら、iso時間形式も読みやすくありません。date標準構文を使用して独自の時間形式を定義できますか?今すぐ:

date +%F-%T

答え1

できませんが、dmesg出力を解析できます。

dmesg --time-format iso \
| while read datestring rest; do \
  printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done

答え2

gawkawkはい、たとえば、次のように(GNU)を使用して時間形式を再指定できます。

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
    

関連情報