我有 Raspberry Pi,它在启动时加载 shell 脚本。
该脚本运行一个 python 脚本,boot_camera.py
该脚本可在存储库中找到。
我有一个服务器,它向 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
在没有看到脚本本身的情况下,我建议调查的一个很大的可能性是,在脚本执行时网络尚未完全水平。手动成功的原因是您在网络完全启动后执行了它。
我有一个 git 存储库,我自己的 pi 相机应用程序依赖于将它捕获的图片和视频铲到云中。我的脚本只是继续循环,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