Comment by Cyph0n

1 year ago

I think about them as “on start” and “on stop”.

It is important to keep in mind that systemd is tailored towards daemons. So if your service just runs a command that eventually exits, you need to explicitly tell systemd to treat it differently than a daemon.

Edit: As others noted, you’re probably looking for oneshot + RemainAfterExit.

It is a little asymmetric, because 'ExecStart' is actually normally 'Executable that is the service', not just script that starts the service, but I think that's a hangover from the self-daemonizing approach to init scripts.

  • True, but it still makes sense to reason about them this way. Say you have an HTTP server:

    - on start: start the server

    - on stop: do nothing, because you are already terminating the server

    But suppose you need to perform an additional task when the server is terminated. That is where you would add a ExecStop command or script.

    • Then ExecStop is basically on-cleanup, not to-stop. ExecStart really is to-start, not on-start. In the httpd server case, ExecStart runs the httpd command.

      2 replies →