start-stop-daemonは常に0(成功)を返します。

start-stop-daemonは常に0(成功)を返します。

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

バラよりスタート - 停止 - デーモンのマンページ

おすすめ記事