node.js - 在脚本中切换用户后运行node.js

标签 node.js bash docker

我有以下脚本:

#!/bin/bash
su newuser
node index.js

此脚本是 Docker 容器的入口点。

当我运行容器时,我看到脚本被执行并切换到 newuser。但是,index.js 不会被调用。但是,一旦我输入“exit”退出 newuser,index.js 就会开始运行。

有人可以解释一下这里的问题是什么吗?

最佳答案

su newuser 将创建一个新的 shell。基本上,该命令启动一个需要一些时间才能退出的进程。只有当它退出时,原始 bash 脚本中的下一个命令才会执行。

如果您想以新用户身份运行 Node ,请使用以下命令:

su newuser -c "node index.js"

您可能还想包含 Node 的完整路径,因为以这种方式启动脚本通常不会显示您可能期望的完整环境(与运行完整 shell 相比,PATH 可能不完整):

su newuser -c "/path/to/node index.js"

关于node.js - 在脚本中切换用户后运行node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51426720/

相关文章:

r - R 中 system() 命令中的括号

bash - 在 awk 中使用一个变量,然后将输出输入到另一个变量中

docker - Prometheus在哪里将度量标准数据存储在容器中?

amazon-web-services - Packer 实例访问 AWS 中的私有(private) Docker 注册表

javascript - 用javascript中的单个反斜杠替换?

javascript - res.end() 是否结束 async.waterfall?

node.js - mqtt mosca pahojs WebSocket 连接到 'ws://localhost:1884/mqtt' 失败/超时

node.js - Passenger Node 应用程序中未定义 process.env.PATH(生产模式)

github - docker git 和拉取设置

在 bash 中找不到 mysql 命令