关闭时 SIGTERM 和 SIGKILL 之间的延迟是多少?

关闭时 SIGTERM 和 SIGKILL 之间的延迟是多少?

当类 Unix 系统正常关闭时,例如使用haltshutdownpoweroff或 GUI 等效项,它将首先尝试通过向所有进程发出 SIGTERM 信号来优雅地退出它们。一段时间后,它会向仍在运行的程序发送 SIGKILL。

这个延迟是多长时间?程序需要多少时间才能正常退出?如果系统之间有所不同,我想知道 Ubuntu 服务器的具体默认设置。

编辑:是否如描述的那样 Systemd 的 90 年代延迟这里

答案1

Systemd 服务可以指定自己的启动和关闭超时值。如果未指定,则从 systemd 配置文件设置值。配置文件中设置的默认启动和关闭时间均为 90 秒。

来自systemd.service 的手册页:

TimeoutStopSec=

此选项有两个目的。首先,它配置等待每个ExecStop=命令的时间。如果其中任何一个超时,则 ExecStop=跳过后续命令,并且服务将被终止 SIGTERM。如果没有ExecStop=指定命令,服务会SIGTERM立即获取。其次,它配置等待服务本身停止的时间。若未在规定时间内终止,将被强制终止SIGKILL(参见 KillMode=systemd.kill(5))。采用以秒为单位的无单位值,或时间跨度值,例如“5min 20s”。通过"infinity"禁用超时逻辑。默认DefaultTimeoutStopSec=来自管理器配置文件(参见 systemd-system.conf(5))。

并从systemd-system.conf 的手册页:

DefaultTimeoutStartSec=, DefaultTimeoutStopSec=,DefaultRestartSec=

配置启动和停止单元的默认超时,以及单元自动重新启动之间的默认睡眠时间,如和 TimeoutStartSec=中每个单元配置的那样(对于服务,请参阅 systemd.service(5) 以了解有关每个单元设置的详细信息)。当使用服务 with 时,默认禁用 。对于非服务单位, 设置默认值。 TimeoutStopSec=RestartSec=Type=oneshotDefaultTimeoutStartSec=TimeoutSec=DefaultTimeoutStartSec=DefaultTimeoutStopSec=默认为 90 秒。 DefaultRestartSec=默认为 100 毫秒。

相关内容