我们可以通过几种不同的方法找出导致重启的原因。我们将在本文中介绍这些方法,并使用可访问的程序和 Linux 系统上的日志来诊断此类问题。
发现 Linux 系统意外重启或无明显原因重启的情况并不少见。查找并修复核心原因可能有助于防止未来出现问题和意外停机。
检查 systemd 日志
如果您没有持久的 systemd-journal,您将无法在磁盘上保留持久的日志,并且您的日志将在您重新启动时丢失。您可以通过编辑/etc/systemd/journald .conf 或使用以下说明手动创建目录来完成此操作:
$ sudo mkdir /var/log/journal
$ sudo systemd-tmpfiles --create --prefix /var/log/journal 2>/dev/null
$ sudo systemctl -s SIGUSR1 kill systemd-journald
之后,如果您想在日志中记录多个重新启动的条目,您可以重新启动机器,尽管这不是必需的。
要从日志中获取记录的引导列表,请使用以下命令:
journalctl --list-boots
如您所见,该清单适用于许多靴子。使用以下命令进一步进行特定的重启:
journalctl -b {num} -n
检查系统消息
您还可以将系统消息与您希望诊断的重启联系起来。
日志位于CentOS/RHEL系统上的/var/log/messages中。它在Ubuntu/Debian系统上登录到/var/log/Syslog。要过滤或发现特定数据,只需使用tail命令或您喜欢的文本编辑器。
此类条目表示由管理员或root用户触发的关机/重启,如下面的日志所示。这些消息因操作系统以及重启/关闭的启动方式而异,但检查系统日志始终会提供有用的信息,即使它并不总是足够精确以查明原因。
nano /var/log/syslog
以下是可用于过滤系统日志的命令示例:
sudo grep -iv ‘: starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel’ \
/var/log/messages /var/log/syslog /var/log/apcupsd* \
| grep -iw ‘recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups’
捕获的事件可能并不总是特定的。始终寻找可能导致系统关闭或崩溃的警告或问题。
检查重启时间
您可以使用who和last命令来查看系统何时重新启动。
who -b
last -x | head | tac
检查审计日志
这是使用 ausearch工具为使用auditd 的系统检查各种事件的绝佳位置。要检查审计日志中的最后两项,请使用以下命令。
sudo ausearch -i -m system_boot,system_shutdown | tail -4
将报告最近的两次关机或重新启动。如果这报告 SYSTEM_SHUTDOWN后跟SYSTEM_BOOT ,那么一切都应该没问题。如果它连续返回两个或多个 SYSTEM_BOOT 行或仅返回一个SYSTEM_BOOT行,则系统不会正常关闭。以下是典型输出的示例:
—-
type=SYSTEM_SHUTDOWN msg=audit(Monday 28 June 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=’ comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success’
—-
type=SYSTEM_BOOT msg=audit(Monday 28 June 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=’ comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success’
上面的输出中列出了两个连续的SYSTEM_BOOT消息,如果与系统日志相关联,这可能表明非正常关闭。
结论
单个命令或单个日志文件可能并不总是足以确定Linux 重新启动的原因。因此,了解记录系统相关事件的命令和日志总是有用的,并且可以减少发现根本原因所需的时间。
以上示例可能会帮助您开始进行故障排除。如果您混合使用此类工具和日志,您可能肯定知道发生了什么以及您的系统如何重新启动。