Cron

crontab shell 腳本 git pull 並永遠啟動

  • March 2, 2016

我正在嘗試設置一個 Raspberry Pi 以在啟動時檢查一個 repo,然後永遠啟動一個節點腳本。

我得到了第二部分的工作,但我嘗試了十幾個 git 命令都沒有成功。

這是我這樣訪問的 crontab:

crontab -u pi -e

@reboot /bin/sh /home/pi/code/script.sh

現在我的腳本具有-rwxr-xr-x訪問權限,如下所示:

#!/bin/sh
cd /home/pi/code
/usr/bin/sudo -u pi -H /usr/bin/git pull origin master

/usr/bin/sudo -u pi -H /home/pi/.nvm/v0.11.11/bin/forever start /home/pi/code/server.js

永遠在重新啟動時啟動 server.js,沒問題,但 repo 永遠不會更新。如果我使用它執行腳本sh /home/pi/code/script.sh會正確觸發 git pull ……我最初為 git pull 設置了一個別名,就像推薦的那樣 git up ,但認為這可能是我的問題,所以我回到了最簡單的版本。仍然沒有成功。

歡迎任何意見。

編輯:crontab 的輸出表明連接問題: Could not resolve host: bitbucket.org在執行腳本之前如何等待網路設置?

在獲得幫助調試並嘗試 Phlogi 的解決方案但沒有成功後,我決定回到原來的 crontab 並添加程式碼以等待網路介面準備好。這是腳本現在的樣子:

#!/bin/sh

while ! ping -c 1 -W 1 bitbucket.org; do
   echo "Waiting for bitbucket - network interface might be down..."
   sleep 1
done

cd /home/pi/code && /usr/bin/sudo -u pi -H git checkout master && /usr/bin/sudo -u pi -H git up

/usr/bin/sudo -u pi -H /home/pi/.nvm/v0.11.11/bin/forever start    /home/pi/code/server.js

引用自:https://unix.stackexchange.com/questions/266986