web-dev-qa-db-ja.com

最後のシャットダウンがクリーンであったかどうかを確認するにはどうすればよいですか?

Ubuntu 11.10で前回のシャットダウンが適切に行われたこと、またはOSをシャットダウンする前にマシンの電源がオフになったことを確認するにはどうすればよいですか?

23
Vikramjeet

マシンが適切にシャットダウンされた場合は、kern.logディレクトリ内の/var/logファイルにシャットダウンログが記録されている必要があります。通常のブートが発生するたびにシャットダウンした後、OSは同じログをkern.logに書き込みます。したがって、ブートおよびシャットダウンプロセスが正常であった場合、すべてのブートログの前にシャットダウンログが必要です。

通常のshutdownが発生するたびに"Kernel logging (proc) stopped."がkern.logに書き込まれます。同様にbootが発生するたびに"imklog 5.8.1, log source = /proc/kmsg started."がkern.logに書き込まれます

突然の電源オフではなく、シャットダウンが正常であった場合、これら2つのメッセージは順番に並んでいるはずです。 「imklog 5.8.1、log source =/proc/kmsg started。」メッセージが「カーネルロギング(proc)が停止しました。)前回のシャットダウンが正常だった場合のメッセージ。両方のメッセージは、常にログにペアで表示されるはずです。enter image description here

ターミナルに入力するだけです:-

gedit /var/log/kern.log

シャットダウンとブートログのペアを確認します。それらがペアで見つからない場合、シャットダウンは突然行われているはずです。

23
Vikramjeet

Ubuntu 16.04の時点で、クリーンシャットダウンに続いて適切な再起動を行うと、これらの2行が/ var/log/syslogに次々と書き込まれます。

Mar  9 14:14:06 *YOUR-HOSTNAME* rsyslogd: [Origin software="rsyslogd" swVersion="8.16.0" x-pid="1086" x-info="http://www.rsyslog.com"] exiting on signal 15.
Mar  9 15:23:42 *YOUR-HOSTNAME* rsyslogd: [Origin software="rsyslogd" swVersion="8.16.0" x-pid="1069" x-info="http://www.rsyslog.com"] start
4
Victorvg

こんにちは、最後のシャットダウンが適切であったかどうかを確認するスクリプトを実行できます。 bashスクリプトに次の行を追加し、システムの起動後に実行します。

#!/bin/bash
B="1"
touch data_file
echo $(($(grep -nr "$(cat  /var/log/kern.log | grep "$(date -d $(who -b | awk '{printf $3}') '+%b %-d')" | grep imklog   | grep $(cat  /var/log/kern.log | grep "$(date -d $(who -b | awk '{printf $3}') '+%b %-d')" | grep imklog | cut -d' ' -f3 | sort -k1 -r | sort --unique --stable -k2,3))" /var/log/kern.log | awk '{printf $1}' | grep -oE "[[:digit:]]{1,}")-$B))  >  data_file


if [[

($(sed -n $(cat data_file)p /var/log/kern.log | awk '{print $6}') == "Kernel") && 
($(sed -n $(cat data_file)p /var/log/kern.log | awk '{print $7}') == "logging") &&
($(sed -n $(cat data_file)p /var/log/kern.log | awk '{print $8}') == "(proc)") &&
($(sed -n $(cat data_file)p /var/log/kern.log | awk '{print $9}') == "stopped.") 


]]; then

  echo Last Shutdown-proper

else

   echo Last Shutdown_not proper 

fi

rm data_file

注:スクリプトを実行するには、rootユーザーになる必要があります。システムに害はありません:)

0
Sid