运行 一个命令在三个主目录中的三个节点脚本

Run three Node scripts in three home directories in one command

因此,作为 Elastic Beanstalk 部署的一部分,我想 运行 来自一个根脚本的三个应用程序的三个服务器。我的设置如下所示:

/package.json
/directory1/keystone.js
/directory2/keystone.js
/directory3/keystone.js

package.json 中,我正在尝试编写一个 npm start 来启动所有这三个,但是 运行ning node directory1/keystone.js 会在 node directory1/keystone.js 中启动服务器这个根目录,而不是 directory1 目录,它会破坏应用程序中的所有路径。因此,在 运行 服务器文件之前,我实际上需要 cd 进入每个目录。我最近的尝试是这样的:

(cd directory1 && node keystone.js) & (cd directory2 && node keystone.js) & (cd directory3 && node keystone.js)

但它只是 运行 第一个。诀窍是这些服务器中的每一个都占用 shell 和一个请求监视器,所以我需要让它们 运行 在后台没有输出,这样我才能继续执行下一个命令。我在每次调用之间尝试了一个带有 cd .. 的版本,但监视器似乎仍然阻止了任何进一步的命令。我如何在单个 shell 中 运行 顺序(或并行)命令而不被 shell 占用的请求监视器之类的东西阻塞?

运行 这在 Win10 上进行开发,但最终会 运行 在 Ubuntu.

(cd directory1 && node keystone.js) & (cd directory2 && node keystone.js) & (cd directory3 && node keystone.js)

这只适用于第一个命令,因为此时您位于目录 1 中。您将需要返回上一级,然后 cd 进入 directory2。另外,如果你需要在后台 运行 节点命令,请在末尾添加“&”。像这样:

(cd directory1 && node keystone.js &) & (cd ../directory2 && node keystone.js &) & (cd ../directory3 && node keystone.js &)

您也可以尝试使用“;”进行链接特点。像这样:

cd directory1; node keystone.js &; cd ../directory2; node keystone.js &; cd ../directory3; node keystone.js &;