如何在单个终端中同时运行命令

如何在单个终端中同时运行命令

我觉得这个问题应该在某个地方得到回答,但我一生都找不到它,所以我想我只想问......

我试图在终端中同时运行 2 个命令,但我需要它们同时运行,并且这两个命令都是正在进行的前台命令。

我怎样才能做到这一点?

例如:

npm run servedocker-compose up

我知道我可以使用单个命令行运算符运行多个“结束/停止”命令,例如&&,;或者||但我需要在同一个终端窗口中同时运行两个命令,使用单个命令,其中标准cntrl + c结束操作。这可能吗?

答案1

您使用单个&

command1 & command2 &

他们中的每一个都将从背景

您可能会侥幸让 2 个任务并行运行:

parallel <<EOF
command1
command2
EOF

但这并不是纯粹的狂欢。我刚刚检查过,如果你使用parallel,如果你杀死团体,它会杀死从并行启动的子进程:

kill -- -pid-of-parallel

因此,如果并行进程的 pid 为 54,则运行:

kill -- -54

那应该有效。

答案2

您无法同时在同一终端中拥有两个前台进程,但可以拥有多个后台进程。

正如其他答案中提到的,您可以提供一个 bash 单行代码,它将创建两个进程,每个进程都在后台运行:
命令1 & 命令2 &

两个进程的输出将到达同一个终端,但您无法与其中任何一个进行交互,因为它们都在后台。要与其中之一交互,您可以使用 ' 将其带到前台弗格'。然后将其放回后台,您可以使用Ctrl+Z暂停程序,然后是 '背景' 以允许程序继续在后台运行。

您可以使用 '全杀' 命令来终止进程而不是Ctrl+C因为这些进程位于后台。或者您可以使用 '弗格' 命令将进程带回到前台,然后您可以使用Ctrl+C杀死他们。

使用 '工作' 命令查看您的 shell 中正在运行哪些后台进程。您可以使用 '重量%' 将特定作业带到前台。

相关内容