[systemd-devel] stop service in 3 steps

Lennart Poettering lennart at poettering.net
Wed Nov 27 08:55:18 UTC 2024


On Di, 26.11.24 12:06, Georg Müller (georgmueller at gmx.net) wrote:

> Hi all,
>
> I am currently trying to set up a 3-step kill mode for an application and this seems not possible with systemd.
>
> Here is the scenario I a trying to achieve:
>
> * on 'systemctl stop ...', the service should receive the TERM signal (KillSignal=SIGTERM)
> * after a certain amount of time, the service should receive the ABRT signal (FinalKillSignal=SIGABRT)
>  * the service has a signal handler for SIGABRT
> * if, for some reason, the SIGABRT signal handler hangs, after some timeout, the service should be (really finnally) killed with an un-catchable
> signal (SIGKILL)

SIGABRT has a pretty clear usecase: to abnormally terminate a program
while creating a coredump. It seems you want to redefine what SIGABRT
is supposed to do? That's quite problematic I would say. What's the
rationale for that?

Note that systemd sends SIGABRT for various reasons on its own, for
example in context of the per-service watchdog logic. Hence,
redefining locally what it means substantially changes the contract
between services and the service manager.

Lennart

--
Lennart Poettering, Berlin


More information about the systemd-devel mailing list