rc.localから呼び出されたスクリプトは、最初のコマンドではなく2番目のコマンドのみを実行します。

rc.localから呼び出されたスクリプトは、最初のコマンドではなく2番目のコマンドのみを実行します。

私はLEDを制御するためにFadecandyと一緒にRaspberry Piを実行しています。すべての設定が完了し、Fadecandyサーバーとエクスポートされた処理スケッチが起動時に実行されることを望みます。

rc.localで、次の内容を使用してstartup.shというスクリプトを呼び出します。

#! /bin/sh

/home/pi/sketchbook/leds/loading/application.linux64/loading &
/usr/local/bin/fcserver &

2行目(fcserver)が実行中で、サーバーが正常に起動します。最初の行(アプリケーション)はまったく実行されていないようです。

ただし、端末でスクリプト(またはrc.local)を呼び出すと、両方の行が実行され、アプリケーションが起動します。

エラーが発生するとrc.localが終了することを知っていますが、問題ではないようです。第二この行は、最初の行が実行されていない後に実行されます。

私は何が間違っていましたか?どんな助けでも大変感謝します。

ベストアンサー1

私の考えでは、fcserverがデーモンとして実行されているようです。つまり、実行中のシェルから分岐して接続を切断しますが、ローダーはそうではありません。

initによってスクリプトが実行されたときに起こるのは、新しいシェル(あなたの場合は/ bin / sh)を作成し、そのシェルのバックグラウンドでloadとfcserverを実行してから...そのシェルを破壊することです。これは暗黙的にHUPを送信します。すべての子プロセスに適用されます。 FCサーバーはデーモンなので生き残りますが、ロードはできません。

ロードコールの前にプレフィックスを追加してみることができますnohup

#! /bin/sh

nohup /home/pi/sketchbook/leds/loading/application.linux64/loading &
/usr/local/bin/fcserver &

Raspberry Piでnohupを使用できるかどうかはわかりません。確認する内容がありません。

おすすめ記事