Hubert Grzeskowiak Asked: 2019-02-26 22:49:39 +0800 CST2019-02-26 22:49:39 +0800 CST 2019-02-26 22:49:39 +0800 CST SIGTERM 和 SIGKILL 之间的延迟是多少? 772 当类 Unix 系统正常关闭时,例如使用halt,shutdown等poweroff或 GUI 等价物,它将首先通过向所有进程发出 SIGTERM 信号来尝试优雅地退出所有进程。一段时间后,它将向仍在运行的程序发送 SIGKILL。 这延迟多长时间?程序需要多长时间才能优雅退出?如果这在系统之间有所不同,我想知道 Ubuntu 服务器的特定默认设置。 编辑:是这里描述的 Systemd 的 90 年代延迟吗? shutdown sigterm 1 个回答 Voted Best Answer Haxiel 2019-02-26T23:10:29+08:002019-02-26T23:10:29+08:00 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=,TimeoutStopSec=并且 RestartSec=(对于服务,请参阅 systemd.service(5) 以获取有关 per- 的详细信息)单位设置)。使用service with 时默认禁用 Type=oneshot。对于非服务单位, DefaultTimeoutStartSec=设置默认TimeoutSec=值。 DefaultTimeoutStartSec=并DefaultTimeoutStopSec=默认为 90 年代。 DefaultRestartSec=默认为 100 毫秒。
Systemd 服务可以为启动和关闭指定自己的超时值。如果未指定,则从 systemd 配置文件设置值。配置文件中设置的默认值是启动和关闭时间均为 90 秒。
从systemd.service 的手册页:
并从systemd-system.conf 的手册页: