システムが突然シャットダウンした場合、いつシャットダウンされたかを知ることは可能ですか? 突然とは、停電または sysrq マジック キーが原因のことを意味します。数秒ごとに何かをログに記録している場合は答えが得られますが、そうでない場合は何か方法がありますか?
カスタマイズされたコンソールベースのシステムを使用しています。カーネルは5.3です
答え1
システムがいつ再起動されたかは、いくつかの方法でわかります...「稼働時間」、「最後の再起動」など。シャットダウンされた時期を知るのは、少し面倒です。rsyslogd を実行して定期的にシステム ログを記録している場合は、/etc/rsyslogd.conf に次の内容を追加することで、モジュール immark を「数秒ごとに何かを記録する」ルーチンとして使用できます。
$ModLoad immark
$MarkMessagePeriod <your time granularity here, in seconds>
$ActionWriteAllMarkMessages on
面倒なことはせずに、メッセージ ファイル内の 2 つのうちの 1 つを見ることもできます。システムが起動したときにファイルがローテーションされている場合は、'ls -l' を使用してファイルの以前のバージョンの日付を確認するだけで、システムが書き込みを停止した時期をかなり正確に推測できます。システム ログをローテーションしない場合は、再起動を示す行の直前の行のタイムスタンプを確認することで、同じ精度を実現できます。再起動は次のようになります。
2020-03-29T03:20:01.529437-04:00 [hostname] rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="1615" x-info="h
ttp://www.rsyslog.com"] rsyslogd was HUPed
シャットダウンが予期していなかった場合は、システム ロガーがシャットダウンする前にログにメッセージを書き込むため、処理は簡単になります。
もちろん、システム ログをオフにしている場合は、このすべてが無意味になります。システム ログにまだログを記録している場合は、そこにあるいくつかのファイルの統計を取得し、変更日時を確認することで、システムがいつ停止したかを大まかに把握できます。
root# stat /var/log/messages-01.gz
File: '/var/log/messages-01.gz'
Size: 185529 Blocks: 368 IO Block: 4096 regular file
Device: fd06h/64774d Inode: 12689803 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: (658178/ mssgro)
Access: 2020-04-08 10:27:47.691311523 -0400
Modify: 2020-04-05 03:01:34.000000000 -0400 <=== that's what you're after ==
Change: 2020-04-07 18:16:40.252668164 -0400
Birth: -
選択したファイルから最新のものを選択すると、システムが停止した時刻をかなり正確に推定できます。
ほんのいくつかのアイデアですが、お役に立てれば幸いです。