2014-12-08 2 views
0

У меня есть простой вопрос. Я пытаюсь запустить Node JS-программу в задаче Cron с помощью скрипта bash.Запуск узла как задача Cron

Так, на кронтаб -е, я сделал задачу @reboot, что выполнение boot.sh:

# m h dom mon dow command 
@reboot bash /home/pi/boot.sh 

И мой Баш скрипт:

#!/bin/sh 
set -e 
cd /home/pi/Sites/node-raspberry-pi/ 
/usr/bin/git pull 
node /home/pi/Sites/node-raspberry-pi/index.js 3000 # where 3000 is the argument of my program 
exit 0 

Когда я bash /home/pi/boot.sh, она работает как предполагается.

Что мне не хватает?

Примечание: как crontab -e, так и bash /home/pi/boot.sh вызывается как pi пользователей.

+0

Используйте полный путь к бинарнику узла. Вы также не используете 'bash' в скрипте cron, но' sh'. Скорее всего, здесь не будет никакой разницы, но это то, что нужно знать – arco444

ответ

4

Возможно, что ваш node не может быть найден при запуске cron; потому что cron имеет ограниченный путь поиска. Попробуйте предваряя его везде, где вы установили node, так, например, вместо

node /home/pi/Sites/node-raspberry-pi/index.js 3000 

вы получите

/usr/local/bin/node /home/pi/Sites/node-raspberry-pi/index.js 3000 

Вы также можете расширить SearchPath для cron см man 5 crontab. Надеюсь, это поможет.

+0

Так оно и было. Я чувствую себя глупым, я сделал это для git, не мог сделать это для узла ... – enguerranws