выполнение приложения node.js из командной строки, но дает ошибки, когда выполнено от задания крона на перезагрузке на ubuntu 14.04 LTS

При запуске моего приложения вручную с помощью навсегда, это хорошо работает. Это работает на 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 на перезагрузке. Некоторая справка очень ценилась бы.

0
задан 28 April 2014 в 22:19

2 ответа

Когда Ваше выполнение сценария от крона, Ваш текущий рабочий каталог будет корневым каталогом пользователя, который вызван сценарий. Таким образом, когда Ваш сценарий пытается найти относительный путь ./client/index.html, файл не существует.

0
ответ дан 7 October 2019 в 22:28

Лучше настроить его в версии независимый путь (у Вас, вероятно, есть несколько версий узла, установленных, так как Вы используете 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

0
ответ дан 7 October 2019 в 22:28

Другие вопросы по тегам:

Похожие вопросы: