我可以在一个终端运行两个正在运行的程序吗?

我可以在一个终端运行两个正在运行的程序吗?

我正在开发一个 nodejs 应用程序,其中包含以下 npm 任务:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "watch": "webpack --progress --watch",
  "develop": "npm start && npm run watch",
  "build": "webpack --progress",
  "start": "node server.js"
}

并且我想在一个终端中的一个命令中运行两个正在进行的进程,也就是npm run develop(它将运行node server.jswebpack --progress --watch

我的问题是,我可以这样做吗?如果可以,这两个进程的日志将如何显示?

答案1

是的,你可以这样做。如果你有两个程序,即 prog1 和 prog2,那么请尝试以下操作:

 #!/bin/bash
 prog1 2> .errorprog1.log & prog2 2> .errorprog2.log &

这会将错误重定向到单独的日志。

你也可以尝试这个:

prog1 &
prog2 &

我发现这个线,其中包含许多对您有益的实用技巧。请仔细阅读。

希望这可以帮助。

谢谢。

答案2

&只需使用fork 命令即可在后台运行该命令。因此

$ node server.js & $ webpack --progress --watch &

两个进程的输出将在终端中混合,这可能会造成混淆,因此您可以将它们记录到文件中

$ node server.js | tee log1 & $ webpack --progress --watch | tee log2 &

查看有关分叉的更多详细信息。

相关内容