(本文字数:2367,阅读时长大约:3分钟)
我希望你对sigterm和sigkill的概念有一点熟悉。
当你关闭Linux系统时,它会发送终止信号(sigterm),并礼貌地要求正在运行的进程停止。有些进程不符合该行为,它们会忽略终止信号并继续运行。
这可能会导致关机过程的延迟,因为你的系统会在一个预定义的时间段内等待运行的进程停止。在这个时间段之后,它会发送kill信号来强制停止所有剩余的运行进程并关闭系统。
事实上,在某些情况下,你会在黑屏上看到一个类似“astopjobisrunning”的信息。
如果你的系统关闭时间太长,你可以做以下工作:
检查哪个进程/服务耗时过长,以及你是否能删除或重新配置它,使其正常运行。
更改系统强制停止运行进程前的默认等待时间。(快速而不优雅的方式)
我的操作系统是使用systemd的Ubuntu。这里的命令和步骤适用于任何使用systemd的Linux发行版(大多数发行版都是这样)。
如果你想找出问题所在,你应该检查上次关机时发生了什么。使用这个命令来获得“我知道你上个会话做了什么”(IKnowWhatYouDidLastSummer的双关语)的力量。
journalctl-rb-1
journalctl命令能让你读取系统日志。使用选项-b-1可以过滤最后一次启动会话的日志。使用选项-r时,日志将按时间倒序显示。
换句话说,journalctl-rb-1命令将显示最后一次关闭Linux系统之前的系统日志。这里就是你需要分析Linux系统长时间关机问题的地方。
没有journal日志?下面是你应该做的。
如果没有journal日志,请确认你的发行版是否使用systemd。
即使在一些使用systemd的Linux发行版上,journal日志也没有被默认激活。
请确认/var/log/journal是否存在。如果不存在,请创建它:
sudomkdir/var/log/journal
你还应该检查/etc/systemd/文件的内容,并确保Storage的值被设置为自动(auto)或持久(persistent)。
你是否在日志中发现可疑的东西?是否有一个进程/服务拒绝停止?如果是,调查一下是否可以在没有副作用的情况下删除它,或者是否可以重新配置它。请不要在这里盲目地去删除东西。你应该对这个进程有所了解。
关机的默认等待时间通常设置为90秒。在这个时间之后,你的系统会尝试强制停止服务。
如果你想让你的Linux系统快速关闭,你可以改变这个等待时间。
你可以在位于/etc/systemd/的配置文件中找到所有的systemd设置。这个文件中应该有很多以DefaultTimeoutStopSec=90s
你得把这个值改成更方便的,比如5秒或10秒。
sudoxdg-open/etc/systemd/
ChangeShutdownTimeSettingsUbuntu
不要忘记删除DefaultTimeoutStopSec前的#号。保存文件并重启系统。
这将帮助你减少Linux系统的关机延迟。
看门狗问题!
Linux有一个名为看门狗的模块,用于监控某些服务是否在运行。它可以被配置为在系统因软件错误而挂起时自动重启系统。
在桌面系统上使用看门狗是不常见的,因为你可以手动关闭或重启系统。它经常被用于远程服务器上。
首先检查看门狗是否在运行:
ps-af|grepwatch*
如果你的系统正在运行看门狗,你可以在systemd配置文件/etc/systemd/中将ShutdownWatchdogSec的值从10分钟改为更低的值。
via:
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。