起動時にシェルスクリプトをロードするRaspberry Piがあります。
boot_camera.py
このスクリプトは、リポジトリにあるPythonスクリプトを実行します。
コマンドを実行するためにRaspberry Piにコマンドを送信するサーバーがありますgit pull
。boot_camera.py
起動時にロードすると、git pullコマンドは失敗します。
ただし、SSHを使用して接続した後に「boot_camera.py」スクリプトを手動でロードすると、コマンドはgit pull
正常に実行されます。
最初は、「sudo」権限を使用してコマンドを実行する必要があるのが問題だと思い、このソリューションを使用して問題を解決しました。
ただし、起動時にスクリプトが起動すると、pull
コマンドはまだ失敗します。
更新:起動スクリプトを設定するスクリプトは次のとおりです。
sudo cp bootCameraModule.sh /etc/init.d/
sudo update-rc.d bootCameraModule.sh defaults
スクリプト自体は次のとおりです。
case "$1" in
start)
echo "Starting camera"
. /home/pi/.virtualenvs/env/bin/activate
# run application
cd /home/pi/rpi-repo/rpi/
python boot_camera.py &
;;
stop)
echo "Stopping camera"
# kill application
sudo killall camera
;;
*)
echo "Usage: /etc/init.d/bootCameraModule {start|stop}"
exit 1
;;
esac
exit 0
答え1
スクリプト自体を見なくても調査することをお勧めしたい強力な可能性は、スクリプトが実行された時点でネットワークがまだ完全に水平になっていないことです。手動が成功する理由は、ネットワークが完全に起動した後に実行したためです。
私のpiカメラアプリがキャプチャした写真やビデオをクラウドに挿入するために使用するgitリポジトリがあります。私のスクリプトは、成功するまで繰り返し続けるか、git clone
少なくとも失敗したことを伝えます。
until git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
do
echo
echo "Download of Dropbox-Uploader repo failed. Retrying"
echo "CTRL +C to exit if failing endlessly"
echo
done