从 shell 启动脚本运行 git pull

从 shell 启动脚本运行 git pull

我有 Raspberry Pi,它在启动时加载 shell 脚本。

该脚本运行一个 python 脚本,boot_camera.py该脚本可在存储库中找到。

我有一个服务器,它向 Raspberry Pi 发送命令以发出git pull命令。boot_camera.py在启动时加载git pull 命令时会失败。

但是,当我在使用 ssh 连接后手动加载“boot_camera.py”脚本时,命令git pull成功执行。

起初我认为问题在于必须使用“sudo”权限来运行命令,所以我使用了这个解决方案来解决问题:

>>>不使用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

相关内容