2016-11-30 4 views
1

私は2つのサブプロセスを開始するデーモンのようなプロセスを持っています(サブプロセスの1つは〜10個を開始します)。私がsystemctl stop私のプロセスで子サブプロセスはsystemctlによって '積極的に'殺されたように見えますが、私のプロセスにはクリーンアップの機会は与えません。systemd `systemctl stop`は積極的にサブプロセスを殺します

systemctl stopを取得して積極的な強制終了を行うと、プロセスが整然としたクリーンアップを調整できるようになりますか?

私はtimeoutSec=30を試してみました。

+0

あなたは '男systemd.services'と'男systemd.kill'でドキュメントをレビューしていますか? –

答えて

1

KillMode= [1]のデフォルト値はcontrol-groupです。つまり、あなたのサービスのすべてのプロセスがSIGTERMで殺されます。

あなたは2つのオプションがあります。あなたが本当にあなたの主からのシャットダウンを委任する場合

  • あなたのプロセスやシャットダウンの各ハンドルSIGTERM TimeoutStopSec内(その90秒デフォルトは[2])
  • をプロセス、セットKillMode=mixed。 SIGTERMはメインプロセスにのみ送られます。その後、再度シャットダウンTimeoutStopSecTimeoutStopSec内でシャットダウンしないと、systemdはすべてのプロセスにSIGKILLを送信します。

注:私は、後者は彼らだけがロックアップした場合に殺されることはない、あなたのサブプロセスを意味し、あなたのメインプロセスに最終SIGKILLを送信して、オプション2の代わりに、KillMode=processKillMode=mixedを使用することをお勧め。

[1] https://www.freedesktop.org/software/systemd/man/systemd.kill.html#KillMode=

[2] https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html#DefaultTimeoutStartSec=

関連する問題