如何验证重启是否是由于断电引起的?

如何验证重启是否是由于断电引起的?

我们遇到了断路器跳闸的问题,我想我们刚刚又遇到了这个问题,但我需要确认我们的一个箱子是由于断电而重新启动的,而不是因为其他平凡的原因。

我从日志中收集了以下信息,但想知道是否还有更多值得说明的信息:

Approx time of restart:
May 19 19:54:57 atlas07 

$ last
davidpar pts/0        10.1.2.12        Sun May 19 19:54   still logged in
reboot   system boot  3.5.0-30-generic Sun May 19 19:44 - 20:19  (00:34)
davidpar pts/0        10.1.2.83        Tue May 14 04:14 - 04:21  (00:06)
...


$ tail -n 500 syslog
<cut>
May 19 19:44:58 atlas07 ntpdate[1489]: adjust time server 91.189.94.4 offset 0.000047 sec
May 19 19:45:04 atlas07 CRON[1492]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
May 19 19:54:57 atlas07 dbus[1012]: [system] Activating service name='org.freedesktop.ConsoleKit' (using servicehelper)
May 19 19:54:57 atlas07 dbus[1012]: [system] Activating service name='org.freedesktop.PolicyKit1' (using servicehelper)
May 19 19:54:57 atlas07 polkitd[1565]: started daemon version 0.104 using authority implementation `local' version `0.104'
<cut>

答案1

如果关闭不彻底(包括断电),最后一个命令将显示会话结束时的崩溃。示例输入:

myuser pts/1        myhostname  Wed Sep 28 14:18 - crash  (00:23)

查看您最后的条目(假设这是所有条目),其中没有列出任何崩溃,因此此系统运行时没有发生断电。此处列出的重新启动似乎是命令重新启动,而不是崩溃。如果您没有手动重新启动此框,则您使用具有 root 访问权限的程序重新启动了此框。

答案2

您的设备没有连接到 UPS?如果您这样做了,通常会有日志记录和支持,您会清楚地看到 UPS 何时断电以及服务器何时因 UPS 安全关闭而停机。也许您会对这个问题感兴趣:https://unix.stackexchange.com/questions/13714/how-to-properly-prepare-a-server-for-power-outages7

当没有UPS时,很难在断电时“写日志”。这是不可能的。你可以间接地找到断电,以排除其他原因。

我建议监控机器的所有重要参数,以确定是什么导致系统关闭。可能是主板或内存等组件故障(通常是蓝屏/内存匹配),或 CPU 和风扇(过热导致关机),或 HDD 读写错误(系统资源上的坏簇),每个都有一些典型症状。

查看 /var/log/syslog /var/log/kern.log 是否有有趣的内容。

断电可以记录在系统 BIOS 中。您可以尝试读取系统 BIOS 日志(如果有),但这会很麻烦,因为每个服务器在这方面都不同。但这不一定能告诉您发生了什么以及“服务器关闭”的原因是什么。尝试使用dmidecode命令获取 BIOS 详细信息,但我怀疑是否会有日志。

或者...如果你不想投资UPS,你至少可以通过现场笔记本电脑监控电源线(有电池,可以读取和记录电源管理器状态)尝试从中记录 grep'适配器' acpi -V,因为它应该写类似的内容Adapter 0: on/off-line

acpi -V |grep 'Adapter'

答案3

这是一个简单的 bash 脚本,它会告诉您上次关机是否是安全重启还是不安全重启。

if [[ "$(last -x | tac | grep -B1 boot | tail -2 | grep shutdown)" == "" ]]; then
  echo "['$(date)'] Last shutdown: Uncontrolled (not safe). Possible power failure."
else
  echo "['$(date)'] Last shutdown: Controlled (safe)"
fi

相关内容