私のアプリケーションは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 programname
2つの別々の行に2つのプロセスを表示します。 1つはis bash -c "source blah && java blah"
、もう1つはjustですjava blah
。
これで問題は、これを実行したりさらに実行したりしても、最初のプロセスは終了しますが、supervisorctl stop programname
通常service supervisor stop
のkill -9 whatever the supervisor pid is
Javaプロセスはそのまま維持され、孤立し、親プロセスpidは1です。瓶を手動で殺すことなく死にさせる方法は?
ベストアンサー1
次にexec
置換を使用します。bash
java
[program:programname]
command=bash -c "source /path/to/env/file && exec java -jar /path/to/jar.jar"
この場合、終了する必要があるプロセスは1つだけです。