Fedora 29(必須)では、次のdmesg
オプションがありません。--since
--until
journalctl
journalctl --since "2022-12-20 09:00:00" --until "2022-12-20 10:00:00"
内に表示されるログをフィルタリングするにはdmesg
?9AM
10AM
Dec 20
答え1
長い--time-format
オプションがdmesg
利用可能ですその他フォーマット:
(T
iso形式のため、日付と時刻の間にスペースはありません。)
sedのみが機能しますログに1行と1行がある場合2022-12-12T09
。2022-12-12T10
$ sudo dmesg --time-format=iso | sed -n '/2022-12-12T09/,/2022-12-12T10/p'
また、時間範囲にさらに具体的な内容を追加するために同様の操作を実行することもできます(ここでは、範囲内で指定された時間(分)だけを取得します。):
2022-12-12T09:16
この場合、ログ内の行と行も必要です。2022-12-12T09:24
$ sudo dmesg --time-format=iso | sed -n '/2022-12-12T09:16/,/2022-12-12T09:24/p'
~からマンページ
- 時間形式format指定された形式(ctime、reltime、delta、またはiso)でタイムスタンプを印刷します。最初の3つの形式は、時間形式の特定のオプションのエイリアスです。 iso形式はISO-8601タイムスタンプ形式のdmesg実装です。この形式の目的は、2つのシステム間のタイムスタンプ比較を他の構文解析だけでなく簡単に作成することです。 iso タイムスタンプは YYYY-MM-DDHH:MM:SS,<-+> で定義されます。
iso形式にはctimeと同じ問題があります。システムが一時停止して再起動すると、時間が正しくない可能性があります。
答え2
特定の範囲内のログを収集するための小さなスクリプトを作成しました。
while read line; do
d=$(echo $line | cut -d ',' -f 1)
if [[ $line =~ ^[[:digit:]] ]] && [[ `date -d "$d" +%s` > `date --date="2 hours ago" +%s` ]]
then
echo $line
fi
done < <(dmesg -T --time-format iso)
since
2時間前のログのみが表示されます。until
スクリプトは同じロジックですが、異なる数学を使用して作成できます。唯一の問題は、dmesg自体よりも遅いことです。