Answers:
如果机器已正确关闭,则目录中必须有一个关闭日志记录在kern.log
文件中/var/log
。关闭后,无论何时进行正常引导,操作系统都会在kern.log中写入相同的日志。因此,如果启动和关闭过程正常,则每个启动日志都必须在关闭日志之前。
每当发生正常关机时,"Kernel logging (proc) stopped."
都会将其写入kern.log中。类似地,每当发生引导时,"imklog 5.8.1, log source = /proc/kmsg started."
都会在kern.log中编写
如果关机正常,而不是突然关闭电源,则这两个消息应按顺序排列。如果先前的关闭正常,则不应有“ imklog 5.8.1,日志源= / proc / kmsg已启动。 ”消息,而没有“ 内核日志记录(proc)停止。这两个消息应始终成对出现在日志中。
只需输入终端:-
gedit /var/log/kern.log
并检查关闭和启动日志对。如果在任何地方都没有成对发现它们,则肯定是突然关机。
kern.log.1
。
cat /var/log/syslog | grep -i "stopped"
,尽管这显然是先前关闭消息的一部分……(可见的日志内容,当按下ESC可以在关闭时按ESC杀死启动屏幕),但我没有得到(和类似的测试也相反) -有人有更新吗?
从Ubuntu 16.04开始,干净关机然后正确重新启动将在/ 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
嗨,您可以运行一个脚本来检查上一次关机是否正确。只需将以下行放入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用户身份运行脚本。它不会损害您的系统:)