Linux Shutdown – Delay Between SIGTERM and SIGKILL

shutdownsigkillsigterm

When a Unix-like system is shut down normally, e.g. using halt, shutdown, poweroff etc. or the GUI equivalents, it will try to exit all processes gracefully first by emitting a SIGTERM signal to them. After some time it will send SIGKILL to the programs which are still running.

How long is that delay? How much time do programs have to exit gracefully?
If this is different between systems, I'd like to know the specific default setting for Ubuntu server.

EDIT: Is it Systemd's 90s of delay as described here?

Best Answer

Systemd services can specify their own timeout values for startup and shutdown. If it is not specified, the values are set from the systemd configuration files. The default value set in the configuration files is 90 seconds for both startup and shutdown.

From the manual page for systemd.service:

TimeoutStopSec=

This option serves two purposes. First, it configures the time to wait for each ExecStop= command. If any of them times out, subsequent ExecStop= commands are skipped and the service will be terminated by SIGTERM. If no ExecStop= commands are specified, the service gets the SIGTERM immediately. Second, it configures the time to wait for the service itself to stop. If it doesn't terminate in the specified time, it will be forcibly terminated by SIGKILL (see KillMode= in systemd.kill(5)). Takes a unit-less value in seconds, or a time span value such as "5min 20s". Pass "infinity" to disable the timeout logic. Defaults to DefaultTimeoutStopSec= from the manager configuration file (see systemd-system.conf(5)).

And from the manual page for systemd-system.conf:

DefaultTimeoutStartSec=, DefaultTimeoutStopSec=, DefaultRestartSec=

Configures the default timeouts for starting and stopping of units, as well as the default time to sleep between automatic restarts of units, as configured per-unit in TimeoutStartSec=, TimeoutStopSec= and RestartSec= (for services, see systemd.service(5) for details on the per-unit settings). Disabled by default, when service with Type=oneshot is used. For non-service units, DefaultTimeoutStartSec= sets the default TimeoutSec= value. DefaultTimeoutStartSec= and DefaultTimeoutStopSec= default to 90s. DefaultRestartSec= defaults to 100ms.