При запуске моего приложения вручную с помощью навсегда, это хорошо работает. Это работает на localhost:8080 и nginx
делает маршрутизацию.
При использовании a cronjob
мой starter.sh
сценарий работает, но в навсегда журнале я получаю ошибку. Если я работаю starter.sh
сценарий из командной строки мое приложение также работает. Это только не работает, когда выполнено от a cronjob
. Вот детали:
навсегда команда списка произвела:
data: [0] pQHz /root/.nvm/v0.10.26/bin/node server.js 953 1077 /root/.forever/pQHz.log 0:0:0:7.90
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=/root/.nvm/v0.10.26/bin/:$PATH
forever start --spinSleepTime 10000 --sourceDir /root/neet server.js >> /root/cronlog.txt 2>&1
fi
crontab -e
:
@reboot sh /root/neet/starter.sh
starter.sh
вывод:
^[[33mwarn^[[39m: --minUptime not set. Defaulting to: 1000ms
^[[32minfo^[[39m: Forever processing file: ^[[90mserver.js^[[39m
навсегда ЖУРНАЛ ОШИБОК:
Error: ENOENT, no such file or directory './client/index.html'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.readFileSync (fs.js:284:15)
at self.populateCache (/root/neet/server.js:42:40)
at self.initialize (/root/neet/server.js:174:14)
at Object.<anonymous> (/root/neet/server.js:191:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
error: Forever detected script exited with code: 8
error: Script restart attempt #1
Это - строка кода в моем приложении что ошибочные ссылки:
self.zcache['index.html'] = fs.readFileSync('./client/index.html');
Я действительно озадачен относительно того, почему это не может считать файл только при выполнении от a cronjob
на перезагрузке. Некоторая справка очень ценилась бы.
Когда Ваше выполнение сценария от крона, Ваш текущий рабочий каталог будет корневым каталогом пользователя, который вызван сценарий. Таким образом, когда Ваш сценарий пытается найти относительный путь ./client/index.html, файл не существует.
Лучше настроить его в версии независимый путь (у Вас, вероятно, есть несколько версий узла, установленных, так как Вы используете nvm).
Это - тот же отрывок, который nvm-установщик добавляет к Вашему/root/.bashrc сценарию
@doc Необходимый для включения node/nvm для cronjob ()
, @doc крон использует по умолчанию короткий тракт =/usr/bin:/bin и не выполняет/root/.bashrc (равный/root/.bashrc)
, @doc nvm (менеджер по версии узла) не настраивает себя в crontab задании (который только сделан для интерактивных оболочек в моем/root/.bashrc).
NVM_DIR экспорта = "/root/.nvm" # или возможно ~./nvm в Вашей среде. [-s "$NVM_DIR/nvm.sh"] & &. "$NVM_DIR/nvm.sh" # Это загружает nvm