2017-05-30 3 views
0

私は/etc/supervisor/conf.d/myscript.confでこれを持っているがbashスクリプトを正しく停止する方法は?

[program:my_script] 
directory=/var/www/myfolder 
command=/var/www/myscript.sh 
numprocs=1 
process_name=%(program_name)s 
autostart=true 
autorestart=true 
user=root 
stopsignal=KILL 

これはmyscript.shの内容です:これが働いているが、私はこのbinaryfileスーパーバイザを停止すると

#!/bin/bash 
cp -n /var/www/binaryfolder/binaryfile /var/www/myfolder 
/var/www/myfolder/binaryfile 

走り続ける

なぜ私はそのファイルを手動でコピーしてスーパーバイザで実行しないのでしょうか?そのファイルはmyscript.shに動的に渡されるため、これは不可能です。

binaryfileが最後のコマンドで起動するので、あなた

答えて

0

をありがとう、あなたは簡単に

#!/bin/bash 
cp -n /var/www/binaryfolder/binaryfile /var/www/myfolder 
exec /var/www/myfolder/binaryfile 

としてmyscript.shを変更することで問題を解決することができexecは、最後の行の先頭に追加されていることに注意してくださいシェルプロセスをバイナリファイルプロセスに置き換えるので、supervisordはそのプロセスを停止します。詳細については、あなたが完全にsupervisord設定からこの問題を解決したいとあなたsupervisordバージョンは3.0b1以上である場合、あなたはstopasgroup=trueパラメータを追加することができます

http://veithen.github.io/2014/11/16/sigterm-propagation.html

を確認することができます。

だからあなたの新しい設定ファイルがsupervisord設定の詳細については

[program:my_script] 
directory=/var/www/myfolder 
command=/var/www/myscript.sh 
numprocs=1 
process_name=%(program_name)s 
autostart=true 
autorestart=true 
user=root 
stopsignal=KILL 
stopasgroup=true 

をする必要があり、確認してください。 http://supervisord.org/configuration.html#program-x-section-settings

関連する問題