【问题标题】:How can I export the execution of a command to an upstart script如何将命令的执行导出到新贵脚本
【发布时间】:2019-10-05 13:51:50
【问题描述】:

我有一个运行 nodejs-appupstart 脚本,但 Node.jsnvm 一起安装。我从另一个文件中为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 输出通过nvm 安装的nodejs 路径;因为如果我更新或更改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 并将其提供给新贵?

注意事项:

  • 我还有一个名为$NVM_BIN环境变量,它输出nodejs 的路径,但也不知道如何将它提供给新贵。

  • exec 指令实际上只有一行;我在这里以分隔行粘贴以避免滚动

【问题讨论】:

    标签: node.js linux bash environment-variables upstart


    【解决方案1】:

    尝试使用反引号“`”而不是 $()

    NODE_NVM_PATH=$(which node)
    
    NODE_NVM_PATH=`which node`
    
    echo ${NODE_NVM_PATH}
    

    您可以告诉我们它的作用。

    【讨论】:

    • 我已将 NODE_NVM_PATH=which node 放在我的/etc/default/nodejs 上。如果我用./etc/default/nodejs 运行它(与以前相同),但在upstart 内不起作用,这就是我需要的。
    • 其他一些想法? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2020-09-25
    • 2015-12-23
    相关资源
    最近更新 更多