start-stop-daemon
自動的に起動するスクリプトを設定しました。
case "$1" in
start)
log_begin_msg "starting foo"
start-stop-daemon --start --chuid nobody --user nobody --pidfile \
/tmp/foo.pid --startas /usr/local/bin/foo.sh &
log_end_msg $?
問題は、プロセスが開始されていなくても常に0(成功)を返すことです。
start-stop-daemon
戻りコードを正しくキャプチャする方法は?
答え1
誰ですかいいえキャプチャされた戻りコードですstart-stop-daemon
。
問題は、バックグラウンドで起動すると正しく開始されることです。私の言葉はあなたがキャプチャするリターンコードを意味しますstarting something in background that wants to start something in background
。
この試み:
rm /tmp/not_existent_file &
echo $?
これは常に印刷されます0
。
バックグラウンドプロセスの戻りコードを取得するには、そのプロセスが終了するのを待つ必要がありますwait
。例は次のとおりです。
rm /tmp/not_existent_file &
wait $!
echo $?
独自にフォークされないプロセスを開始するには、--background
スイッチを使用して行の&
末尾から削除してみてくださいstart-stop-daemon
。