我的操作系统是使用 systemd 的 Ubuntu。这里的命令和步骤适用于任何使用 systemd 的 Linux 发行版(大多数发行版都是这样)。
检查哪些进程会导致 Linux 的长时间关机
如果你想找出问题所在,你应该检查上次关机时发生了什么。使用这个命令来获得“我知道你上个会话做了什么”(I Know What You Did Last Summer 的双关语)的力量。
journalctl -rb -1
journalctl 命令 能让你读取系统日志。使用选项 -b -1 可以过滤最后一次启动会话的日志。使用选项 -r 时,日志将按时间倒序显示。
换句话说,journalctl -rb -1 命令将显示最后一次关闭 Linux 系统之前的系统日志。这里就是你需要分析 Linux 系统长时间关机问题的地方。
没有 journal 日志?下面是你应该做的。
如果没有 journal 日志,请确认你的发行版是否使用 systemd。
即使在一些使用 systemd 的 Linux 发行版上,journal 日志也没有被默认激活。
请确认 /var/log/journal 是否存在。如果不存在,请创建它:
sudo mkdir /var/log/journal
你还应该检查 /etc/systemd/journald.conf 文件的内容,并确保 Storage 的值被设置为自动(auto)或持久(persistent)。
你是否在日志中发现可疑的东西?是否有一个进程/服务拒绝停止?如果是,调查一下是否可以在没有副作用的情况下删除它,或者是否可以重新配置它。请不要在这里盲目地去删除东西。你应该对这个进程有所了解。
通过减少默认停止超时来加快 Linux 中的关机速度(快速修复)
关机的默认等待时间通常设置为 90 秒。在这个时间之后,你的系统会尝试强制停止服务。
如果你想让你的 Linux 系统快速关闭,你可以改变这个等待时间。
你可以在位于 /etc/systemd/system.conf 的配置文件中找到所有的 systemd 设置。这个文件中应该有很多以 # 开头的行。它们代表了文件中各条目的默认值。
在开始之前,最好先复制一份原始文件。