希望大家对sigterm和sigkill的概念有所了解。当您关闭Linux系统时,它会发送终止信号(sigterm)并礼貌地要求正在运行的进程停止。有些进程不符合这种行为,它们忽略终止信号并继续运行。这可能会导致关闭过程延迟,因为您的系统会等待一段预定义的时间来停止正在运行的进程。在这个时间段之后,它会发送kill信号以强行停止所有剩余的正在运行的进程并关闭系统。事实上,在某些情况下,您会在黑屏上看到类似“停止作业正在运行”的消息。如果您的系统关闭时间太长,您可以执行以下操作:检查哪个进程/服务花费的时间太长,以及您是否可以将其删除或重新配置以正常运行。更改系统强制停止正在运行的进程之前的默认等待时间。(快速而优雅的方式)我的操作系统是使用systemd的Ubuntu。此处的命令和步骤适用于任何使用systemd的Linux发行版(大多数发行版也是如此)。检查Linux中哪些进程导致长时间关机如果您想找出问题所在,您应该检查上次关机时发生了什么。使用此命令获得“我知道你去年夏天做了什么”的力量(双关语意为“我知道你去年夏天做了什么”)。journalctl-rb-1journalctl命令允许您读取系统日志。使用选项-b-1过滤上次启动的会话的日志。使用选项-r时,日志将按相反的时间顺序显示。换句话说,journalctl-rb-1命令将显示Linux系统上次关闭之前的系统日志。这是您需要分析您的Linux系统长时间关机问题的地方。没有日记?这是你应该做的。如果没有日志,请确保您的发行版使用systemd。即使在某些使用systemd的Linux发行版上,journaljournal默认情况下也没有激活。请确认/var/log/journal存在。如果它不存在,请创建它:sudomkdir/var/log/journal您还应该检查/etc/systemd/journald.conf文件的内容并确保Storage值设置为auto或persistent。你在日志中看到任何可疑的东西吗?是否有拒绝停止的进程/服务?如果是这样,调查是否可以在没有副作用的情况下删除它,或者是否可以重新配置它。请不要盲目删除这里的东西。您应该熟悉该过程。通过减少默认停止超时来加速Linux中的关机(快速修复)默认的关机等待时间通常设置为90秒。这段时间之后,您的系统将尝试强制停止该服务。如果您希望Linux系统快速关闭,您可以更改此等待时间。您可以在位于/etc/systemd/system.conf的配置文件中找到所有systemd设置。这个文件中应该有很多以#开头的行。它们代表文件中条目的默认值。在开始之前,最好复制一份原始文件。sudocp/etc/systemd/system.conf/etc/systemd/system.conf.orig在这里寻找DefaultTimeoutStopSec。它可以设置为90秒。#DefaultTimeoutStopSec=90s您必须将此值更改为更方便的值,例如5或10秒。DefaultTimeoutStopSec=5s如果不知道如何在终端编辑配置文件,可以使用这个命令在系统默认的文本编辑器(如Gedit)中打开文件进行编辑:sudoxdg-open/etc/systemd/system.confChangeShutdownTimeSettingsUbuntu不要忘记删除DefaultTimeoutStopSec之前的#号。保存文件并重新启动系统。这将帮助您减少Linux系统的关机延迟。看门狗问题!Linux有一个名为watchdog的模块,用于监视某些服务是否正在运行。它可以配置为在系统因软件错误而挂起时自动重新启动系统。在桌面系统上很少使用看门狗,因为您可以手动关闭或重新启动系统。它通常用于远程服务器。首先检查看门狗是否正在运行:ps-af|grepwatch*如果您的系统正在运行看门狗,您可以将ShutdownWatchdogSec的值从10分钟更改为低值。
