[systemd-devel] behavior of stop in case of multiple processes

Andrei Borzenkov arvidjaar at gmail.com
Thu Jul 30 11:41:29 PDT 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

В Thu, 30 Jul 2015 20:07:03 +0200
Michał Zegan <webczat_200 at poczta.onet.pl> пишет:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Here is a log from appserver.service:
>  appserver.service: Trying to enqueue job
> appserver.service/stop/replace
>  appserver.service: Installed new job appserver.service/stop as 16578
> 
>  appserver.service: Enqueued job appserver.service/stop as 16578
> 
>  appserver.service: Changed running -> stop-sigterm
> 
>  Stopping java application server...
> 
>  appserver.service: Child 19079 belongs to appserver.service
> 
>  appserver.service: Main process exited, code=killed, status=15/TERM
> 
>  appserver.service: Changed stop-sigterm -> dead
> 
>  Stopped java application server.
> 
>  appserver.service: Child 19142 belongs to appserver.service
> 
>  appserver.service: cgroup is empty
> 
>  appserver.service: cgroup is empty
> 
> 
> What happens with the other child? 

You are likely facing variant of
https://github.com/systemd/systemd/issues/317

First SIGTERM kills your parent shell immediately. For systemd it means
"service is stopped" and it enters final SIGTERM. Now it does not wait
for child to stop but rather immediately sends final SIGKILL.

Either your parent needs to wait until child exits, or you should get
rid of parent so that Java process is main process for systemd.

Or you can revert commit mentioned in issue :)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEARECAAYFAlW6b9kACgkQR6LMutpd94w/pACgvnPjF3xVms4D0qv9i24MlnRh
8ukAoMJhioFyh3/n6uDX9w21l24T5Fxk
=5S47
-----END PGP SIGNATURE-----


More information about the systemd-devel mailing list