如何在 Linux 终端中有两个正在运行的进程? (Linux 命令)

Posted

技术标签:

【中文标题】如何在 Linux 终端中有两个正在运行的进程? (Linux 命令)【英文标题】:How to have two running processes in Linux terminal? (Linux command) 【发布时间】:2021-11-18 01:43:24 【问题描述】:

我正在学习 React + Apollo 教程,但不得不停下来要求我同时运行服务器和应用程序。我尝试先通过当前目录中的“yarn start”运行应用程序,然后在终止应用程序“ctrl + c”后移动到“server”目录以通过“yarn dev”运行服务器,该应用程序没有运行两件事同时。

我做了什么

在阿波罗目录中

纱线开始

ctrl + c

光盘服务器

在服务器目录中

纱线开发

如何同时运行服务器(在服务器目录中)和应用程序(在 apollo 目录中)?谢谢!

【问题讨论】:

我想到了许多选项(后台作业、屏幕、tmux 等),但为什么不直接打开第二个终端并在那里运行第二个命令呢? @knittl 谢谢。我不知道我能做到这一点。 【参考方案1】:

在你的终端窗口右上角应该有一个按钮,这将打开一个新标签。您应该能够在单独的选项卡中运行这两个选项卡,我通常首先启动服务器。 我的看起来像这样: enter image description here

【讨论】:

【参考方案2】:

我认为最简单的方法是:

program1 &
program2 &

这将在后台运行这两个程序。 如果将其用作脚本的一部分,您也可以使用 wait

您可能会发现其他有用的命令:

jobs # prints all jobs running in the background
fg [job_id] - foreground, brings the program to the front.
bg [job_id] - background, sends a program to the background.
CTRL+Z - suspends a job running in the front. You'll be able to see it when running jobs.

还有其他一些选项。要深入理解这一点,您需要熟悉进程作为操作系统的一部分是如何工作的。

见How do you run multiple programs in parallel from a bash script?、Using bg and fg with a given PID

【讨论】:

以上是关于如何在 Linux 终端中有两个正在运行的进程? (Linux 命令)的主要内容,如果未能解决你的问题,请参考以下文章

如何在Linux中查看所有正在运行的进程(ps)

如何在 linux 终端中同时编译和运行 c++ 代码?

两个进程printf在c中的一个终端重叠

linux 如何后台运行

如何在Linux中查看所有正在运行的进程

如何把linux后台任务调到前台