Скрипт командной строки Crontab git pull и навсегда

Я пытаюсь настроить Raspberry Pi, чтобы проверить репо при запуске, а затем запустить сценарий узла с навсегда.

Я получил вторую часть работы, но я пробовал десятки команд 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 

Forever запускает server.js при перезагрузке, без проблем, но репо никогда не обновляется. Если я запускаю скрипт с помощью sh /home/pi/code/script.sh он запускает git pull правильно … Я изначально настроил псевдоним для git pull, чтобы он был git вверх, как это рекомендуется, но понял, что это может быть моя проблема и я вернулся к самой простой версии. Все еще нет успеха.

Любой вход приветствуется.

EDIT: выход crontab указывает на проблему с подключением: Could not resolve host: bitbucket.org как я могу ждать, пока сеть будет настроена до запуска сценария?

  • Изменение имени Bluetooth по умолчанию через некоторое время
  • Не удается подключить сетевой диск.
  • Две версии SSH
  • Получить имя устройства в сети
  • Как создать выход в скрипт python, запущенный при загрузке?
  • Минимальная установка Oracle Java 8 на Debian - безглавная, без GUI
  • Как подключить Raspbian к Интернету в Eth0?
  • Lp и lpr при постскриптуме
  • 2 Solutions collect form web for “Скрипт командной строки Crontab git pull и навсегда”

    Вместо использования crontab вы должны создать простой сервис, который зависит от сети:

     #!/bin/bash # /etc/init.d/XY ### BEGIN INIT INFO # Provides: XY # Required-Start: $syslog $network # Required-Stop: $syslog $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Example initscript # Description: This service is used to start XY ### END INIT INFO case "$1" in start) echo "Updating XY" cd /home/pi/code /usr/bin/sudo -u pi -H /usr/bin/git pull origin master echo "Starting server.js" /usr/bin/sudo -u pi -H /home/pi/.nvm/v0.11.11/bin/forever start /home/pi/code/server.js ;; stop) echo "Stopping XY" ;; *) echo "Usage: /etc/init.d/XY start|stop" exit 1 ;; esac exit 0 

    Поместите его в служебную папку и сделайте ее выполнимой:

     sudo chmod +x /etc/init.d/XY 

    Получив помощь для отладки и тестирования решения 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 
    Linux и Unix - лучшая ОС в мире.