Javascript 如何设置节点以打开n个shell并同步执行n个命令?

Javascript 如何设置节点以打开n个shell并同步执行n个命令?,javascript,shell,Javascript,Shell,我正在编写一个测试套件,它需要启动一个代理,然后需要在代理启动后向其发出curl POST请求 这很容易通过终端中的两个不同选项卡手动执行,例如: In one terminal window: sh ./proxy/bin/yourProxy 这是可行的,但我想让它自动化 我遇到的问题是,当我运行第一个shell命令时,会打开一个shell,但另一个shell永远不会打开—我需要两个不同的shell—每个命令一个 我尝试过使用并发npm模块,并使用sleep使命令同步-没有运气 我正在使用n

我正在编写一个测试套件,它需要启动一个代理,然后需要在代理启动后向其发出curl POST请求

这很容易通过终端中的两个不同选项卡手动执行,例如:

In one terminal window: sh ./proxy/bin/yourProxy
这是可行的,但我想让它自动化

我遇到的问题是,当我运行第一个shell命令时,会打开一个shell,但另一个shell永远不会打开—我需要两个不同的shell—每个命令一个

我尝试过使用并发npm模块,并使用sleep使命令同步-没有运气

我正在使用node进行探索。我尝试了节点的spawn、exec和execSync。下面是一个使用spawn的示例:

const { spawn } = require("child_process");

const childOne = spawn("/bin/sh", [ "-c", "curl http://www.google.com" ])
const childTwo = spawn("/bin/sh", [ "-c", "curl http://www.yahoo.com" ])

childOne.stdout.on("data", (data) => {
  console.log(`childOne stdout:\n${data}`);
});

childTwo.stdout.on("data", (data) => {
  console.log(`childTwo stdout:\n${data}`);
});
这会产生卷曲childOne的结果,但child2显示“重定向”

终端输出

child2 stdout:
redirect
child stdout:
expected output from curling google.com

如何设置节点以同步打开n个Shell和执行n个命令?

首先,您不需要同步运行其他进程、发出网络请求等操作,因为它们可能会阻塞主进程并使程序卡住

其次,您发现的函数没有问题:
spawn()
exec()
可以异步运行进程,
execSync()
同步执行相同的操作。
curl的原因http://www.yahoo.com
prints
redirect
是一个重定向。尝试在您自己的shell中运行它,您将能够找到完全相同的输出:

$curlhttp://www.yahoo.com
重新使用

brilliant-我应该测试curl,看看典型的输出是什么!我确实需要我正在尝试运行的实际进程-同步运行-一个是代理启动,在它运行后-我用另一个命令设置端口-但它必须发生在新的shell中。
child2 stdout:
redirect
child stdout:
expected output from curling google.com