
私は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を使用できるかどうかはわかりません。確認する内容がありません。