Package: systemd
Version: 215-17+deb8u4
Severity: normal


I am trying to set up a service shutdown sequence in a way that the service is asked nicely to quit, and if it doesn't, then it's killed after a timeout. Sounds very simple - this is very basic.

According to man systemd.service,

TimeoutStopSec=
    Configures the time to wait for stop. If a service is asked to
    stop, but does not terminate in the specified time, it will be
    terminated forcibly via SIGTERM, and after another timeout of equal
    duration with SIGKILL (see KillMode= in systemd.kill(5)).

However, with this setup:

ExecStop=<ask the service nicely>
KillMode=none
TimeoutStopSec=10s

the service is NEVER killed - even after 10s timeout.

Maybe I don't understand what's written in the manual? I just can't believe such a basic thing could seriously be overlooked up until now...

I've also tried the same with KillMode=process (and without KillMode at all - it defaults to control-group), hoping that maybe it will give my service some time to shut down after ExecStop=, but it killed the process immediately (and it went into "failed" mode for not stopping quickly enough). Why do we have ExecStop= at all if the service is killed immediately anyway?

This behaviour us the same in a newer version of systemd in Linux Mint 18, so it's an upstream bug. (Either that, or I really don't understand something that simple.)

Here is a sample .service file that can be used safely to test this behaviour.


= = = = = = =
test.service
= = = = = = =

[Unit]
Description=Test service


[Service]
ExecStart=/usr/bin/screen -h 1024 -dmS test ftp nonExistentServer
Type=forking

ExecStop=/usr/bin/screen -p 0 -S test -X eval 'stuff \"ServiceGoDie\"\015'
# Change the command to "bye" to actually let the "service" quit
# Otherwise it is supposed to fail to quit peacefully
# and be killed after 10s after "systemctl stop test"

KillMode=none
TimeoutStopSec=10s


[Install]
WantedBy=multi-user.target

= = = = = = =


-- Package-specific info:

-- System Information:
Debian Release: 8.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.1.18-aufs (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages systemd depends on:
ii  acl             2.2.52-2
ii  adduser         3.113+nmu3
ii  initscripts     2.88dsf-59
ii  libacl1         2.2.52-2
ii  libaudit1       1:2.4-1+b1
ii  libblkid1       2.25.2-6
ii  libc6           2.19-18+deb8u4
ii  libcap2         1:2.24-8
ii  libcap2-bin     1:2.24-8
ii  libcryptsetup4  2:1.6.6-5
ii  libgcrypt20     1.6.3-2+deb8u1
ii  libkmod2        18-3
ii  liblzma5        5.1.1alpha+20120614-2+b3
ii  libpam0g        1.1.8-3.1+deb8u1+b1
ii  libselinux1     2.3-2
ii  libsystemd0     215-17+deb8u4
ii  mount           2.25.2-6
ii  sysv-rc         2.88dsf-59
ii  udev            215-17+deb8u4
ii  util-linux      2.25.2-6

Versions of packages systemd recommends:
ii  dbus            1.8.20-0+deb8u1
ii  libpam-systemd  215-17+deb8u4

Versions of packages systemd suggests:
pn  systemd-ui  <none>

-- no debconf information

--
darkpenguin

Reply via email to