Hi ToddAndMargo! On 2017.10.27 at 16:57:38 -0700, ToddAndMargo wrote next:
> I was wondering why one would go through all the effort > to do a "ExecStop" in systemd if shutdown was going to send > SIGTERM to everyone anyway. Well because the process might > not have long enough to shutdown before the SIGKILL or have > all its sub process complete properly either. There are lots of reasons to have ExecStop (especially for databases). First is handling the case when database can't accept SIGTERM correctly and needs specific command to shutdown instead (e.g. Oracle DB). Second is need to do some pre/post shutdown cleanup, e.g. you want to send some notification to someone else before shutdown. Third is manual picking of process to terminate, systemd can either kill very first process with SIGTERM or kill all, but there are cases when you need to kill something else. For example, this is tree of running processes: (1) wrapper | (2) control manager | (3) child 1 (4) child 2 (5) child 3 systemd can kill either (1) or (1-5) depending on settings, but killing (1) is useless and killing (3-5) directly might harm the service state, the only way to correctly shutdown is to send signal to (2) (or 1 and 2 at once). Here you'll need ExecStop again. I'd say that the only annoyance here is that ExecStop must be synchronous, it must actually wait till everything shutdowns before returning, otherwise systemd will treat it as failed shutdown attempt and kill the service remains right after ExecStop returns. So if you're going to stop by sending SIGTERM to some specific process, you need a wrapper script for ExecStop which waits till everything has shutdown properly. You can't use one that calls shutdown in background and returns without waiting. Anyhow, just like ExecStop allows these kinds of customizations, you can also define "TimeoutStopSec" parameter (e.g. TimeoutStopSec=5min) and systemd will wait that time either after sending SIGTERM (if there is no ExecStop) or after ExecStop and before sending SIGKILL (ExecStop command will be aborted in that case when the time has ran out). -- Vladimir