Как я могу экспортировать выполнение команды в сценарий upstart - PullRequest
0 голосов
/ 18 мая 2019

У меня есть скрипт upstart, который запускает nodejs-app , но Node.js установлен с nvm.Я поставил некоторые переменные в upstart из другого файла, и мой раздел script выглядит следующим образом:

script

. /etc/default/nodejs

exec start-stop-daemon --start  --make-pidfile --pidfile /var/run/app.pid
--chdir /home/node-apps/ --chuid root:root
--exec $NODE_NVM_PATH app.js >> /var/log/node/app.log 2>&1

end script

В /etc/default/nodejs (chmod 744) У меня есть это:

NODE_NVM_PATH=$(which node)

с идеей, что which node выводит путь к nodejs, установленный через nvm;потому что, если я обновляю или изменяю версию Node.js, я не хочу редактировать новый путь в этом файле.

Но при использовании этого метода не работает, и мой app.js не работает,Я также пытался export NODE_NVM_PATH=$(which node), и тот же результат.

Но если я положу:

NODE_NVM_PATH="/root/.nvm/versions/node/v12.2.0/bin/node"

внутри /etc/default/nodejs все работает отлично.

Итак, мой вопрос:

Как я могу получить выполнение which node в этом другом файле и отправить его в upstart?

ПРИМЕЧАНИЯ:

  • У меня также есть переменная окружения , называемая $NVM_BIN, которая выводит путь к nodejs, но также не знает, как его преобразовать в upstart.

  • Инструкции exec на самом деле находятся только в одной строке;Я вставил сюда разделенные строки, чтобы избежать прокрутки

1 Ответ

0 голосов
/ 18 мая 2019

попробуйте обратные кавычки "` "вместо $ ()

NODE_NVM_PATH=$(which node)

NODE_NVM_PATH=`which node`

echo ${NODE_NVM_PATH}

, вы можете сообщить нам, что он делает.

...