如何判断我在 Ubuntu 11.10 中上次关机是否正确完成或者在关闭操作系统之前机器是否已关闭?
答案1
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
并检查关机和启动日志对。如果在任何地方都没有发现它们成对出现,则关机一定是突然的。
答案2
我使用last
命令。它列出了重新启动和崩溃。
答案3
从 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
答案4
您好,您可以运行脚本来检查上次关机是否正确。只需将以下几行放入 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 用户身份运行该脚本。它不会损害您的系统 :)