監督者を殺すときに監督者タスクの子プロセスが終了するようにするにはどうすればよいですか?

監督者を殺すときに監督者タスクの子プロセスが終了するようにするにはどうすればよいですか?

私のアプリケーションはjarファイルであり、いくつかの環境変数が必要です。すべての環境変数を次のファイルに入れました。

export VAR=value
export VAR2=value2
#....etc

私のスーパーバイザー設定ファイルは次のとおりです。

[program:programname]
command=bash -c "source /path/to/env/file && java -jar /path/to/jar.jar"

ps -ef | grep programname2つの別々の行に2つのプロセスを表示します。 1つはis bash -c "source blah && java blah"、もう1つはjustですjava blah

これで問題は、これを実行したりさらに実行したりしても、最初のプロセスは終了しますが、supervisorctl stop programname通常service supervisor stopkill -9 whatever the supervisor pid isJavaプロセスはそのまま維持され、孤立し、親プロセスpidは1です。瓶を手動で殺すことなく死にさせる方法は?

ベストアンサー1

次にexec置換を使用します。bashjava

[program:programname]
command=bash -c "source /path/to/env/file && exec java -jar /path/to/jar.jar"

この場合、終了する必要があるプロセスは1つだけです。

おすすめ記事