SIGTERM 和 SIGKILL 之間的延遲是多少?
當類 Unix 系統正常關閉時,例如使用
halt
,shutdown
等poweroff
或 GUI 等價物,它會首先通過向所有程序發出 SIGTERM 信號來嘗試優雅地退出所有程序。一段時間後,它將向仍在執行的程序發送 SIGKILL。這延遲多長時間?程序需要多長時間才能優雅退出?如果這在系統之間有所不同,我想知道 Ubuntu 伺服器的特定預設設置。
編輯:是這裡描述的 Systemd 的 90 年代延遲嗎?
Systemd 服務可以為啟動和關閉指定自己的超時值。如果未指定,則從 systemd 配置文件設置值。配置文件中設置的預設值是啟動和關閉時間均為 90 秒。
TimeoutStopSec=
此選項有兩個目的。首先,它配置等待每個
ExecStop=
命令的時間。如果其中任何一個超時,後續ExecStop=
命令將被跳過,服務將被終止SIGTERM
。如果未ExecStop=
指定命令,則服務SIGTERM
立即獲取。其次,它配置了等待服務本身停止的時間。如果它沒有在指定的時間內終止,它將被強制終止SIGKILL
(參見KillMode=
systemd.kill(5))。採用以秒為單位的無單位值,或時間跨度值,例如“5min 20s”。通過"infinity"
以禁用超時邏輯。預設為DefaultTimeoutStopSec=
來自管理器配置文件(參見 systemd-system.conf(5))。
DefaultTimeoutStartSec=
,DefaultTimeoutStopSec=
,DefaultRestartSec=
**配置單元啟動和停止的預設超時,**以及單元自動重新啟動之間的預設休眠時間,如在 中為每個單元配置的那樣
TimeoutStartSec=
,TimeoutStopSec=
並且RestartSec=
(對於服務,請參閱 systemd.service(5) 以獲取有關 per- 的詳細資訊)單位設置)。使用service with 時預設禁用Type=oneshot
。對於非服務單位,DefaultTimeoutStartSec=
設置預設TimeoutSec=
值。DefaultTimeoutStartSec=
並DefaultTimeoutStopSec=
預設為 90 年代。DefaultRestartSec=
預設為 100 毫秒。