在一个命令

时间:2018-03-13 17:20:48

标签: node.js unix keystonejs

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

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

package.json中,我正在尝试写一个npm start,它将关闭所有这三个,但运行node directory1/keystone.js会在此根目录中关闭服务器,而不是{ {1}}目录,它打破了应用程序中的所有路径。因此,在运行服务器文件之前,我需要实际directory1进入每个目录。我的最新尝试是:

cd

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

在Win10上运行此开发,但最终将在Ubuntu上运行。

1 个答案:

答案 0 :(得分:1)

  

(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 directory1;节点keystone.js&amp ;; cd ../directory2;节点keystone.js   &放;; cd ../directory3;节点keystone.js&amp ;;