Использование Cron для защиты от перезагрузки Forever.js

Я пытаюсь выполнить Forever.js при перезагрузке системы, используя скрипт bash (с именем starter.sh), чтобы проверить, работает ли мое приложение или нет:

#!/bin/sh
if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
then
        export PATH=/usr/local/bin:$PATH
        forever start --sourceDir ~/var/www/mysite app.js >> ~/var/www/mysite/log.txt 2>&1
fi

Затем я добавил следующий код в crontab:

@reboot ~/var/www/mysite/starter.sh

но после перезагрузки системы (sudo reboot) Forever.js не запускается. В файле журнала я получаю следующие сообщения:

/root/var/www/mysite/starter.sh: 6: 
/root/var/www/mysite/starter.sh: forever: not found

Есть идеи?

P.S. если я вызываю Forever из командной строки (forever start --sourceDir ~/var/www/mysite app.js), все работает правильно.


person ReDEyeS    schedule 28.12.2013    source источник
comment
вызов /usr/local/bin/forever start ... не сработает?   -  person mgherkins    schedule 28.12.2013
comment
ничего не изменилось (/root/var/www/mysite/starter.sh: /usr/local/bin/forever: не найдено)   -  person ReDEyeS    schedule 28.12.2013


Ответы (2)


Я бы посмотрел на что-то вроде upstart для запуска/остановки ваших скриптов узла при перезагрузке. В этом посте подробно рассказывается о том, как делать именно то, что вам нужно, и вы можете немного упростить настройку для своих нужд:

https://www.exratione.com/2013/02/nodejs-and-forever-as-a-service-simple-upstart-and-init-scripts-for-ubuntu/

Но если вы не используете Ubuntu или что-то подобное, каждая среда имеет свой собственный тип служб запуска / остановки. В Mac OS X вместо этого можно использовать launchd. launchd имеет много функций, но, надеюсь, этот пост поможет вам в правильном направлении:

http://paul.annesley.cc/2012/09/mac-os-x-launchd-is-cool/

person arnorhs    schedule 28.12.2013

недостающая часть:

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

Эта серия команд навсегда помещается в /usr/local/bin/.

person ReDEyeS    schedule 29.12.2013