2016-06-17 16 views
2

start-stop-daemonを使用して、バックグラウンドで実行されるプロセスを開始しようとしています。私が知っているように、start-stop-daemonは、すでに実行中の場合に2番目のプロセスが起動されないようにする予定です。私が実行しているスクリプトは、今のところかなり単純です:複数のプロセスを開始するstart-stop-daemon

#!/bin/sh 
while true; do 
    date > /home/pi/test/test.txt 
    sleep 10 
done 

私はスタートを実行した場合、私は、成功したしかしstart-stop-daemon --stop -v --pidfile /var/run/test.pid

を使用してスクリプトを停止することができる午前start-stop-daemon --start -v -b -m --pidfile /var/run/test.pid --exec /home/pi/test/test.sh

を使用してスクリプトを起動していますコマンドを2回実行すると、私が期待していたプロセスではなく、2つのプロセスが開始されます。 startコマンドはプロセスを開始する前にpidファイルをチェックしますか、それが起こるために何か他のことが必要ですか?

答えて

3

man page of start-stop-daemonには、スクリプトによる--execオプションの使用に関する特別な警告が含まれています。この実行可能ファイルのインスタンスであるプロセスに対する

-x--exec実行

チェック。実行可能ファイルの 引数は絶対パス名でなければなりません。 注:実行可能ファイルは インタプリタを指しているので、 が解釈されたスクリプトを対象としているため、動作しない可能性があります。

スクリプトを実行すると、実際に起動されるプロセスはスクリプトのシバン行に記載されているインタープリタになります。これにより、開始停止デーモンユーティリティが混乱します。

ところで、あなたはスタート・ストップ・デーモンの問題のようなものをデバッグする -tオプションを使用することができます。

+1

'--exec'の代わりに' --startas'を使用すると、実行可能ファイルとのマッチングが行われなくなりました。ありがとうございました! – engineAL

+0

@engineAL - あなたのコメントは答えの一部でなければなりません!大きな助け、ありがとう! – chaimp

関連する問題