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



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

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

package.json中,我试图编写一个npm start来启动所有这三个,但是运行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)

这仅适用于第一个命令,因为此时您位于 directory1 中。您需要向上备份一个级别,然后 cd 到 directory2。此外,如果需要在后台运行 node 命令,请在末尾添加"&"。像这样:

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

您也可以尝试使用";"字符链接。像这样:

cd 目录 1; 节点梯形.js &; cd ../目录2;节点梯形.js &;光盘../目录3;节点梯形失真.js &;

最新更新