在 Bash 中运行后台进程
在终端中执行命令时,需要等待命令执行完毕。 这称为前台进程。
但是,一些高级程序需要在后台运行。 在 Bash 脚本中,有一种简单的方法可以让您的命令在后台运行。
后台进程的有趣之处在于您无需等待命令执行结束。 您可以并行运行另一个命令。
但是您不能仅通过单击十字按钮来结束后台进程。 您必须使用一些命令来结束后台进程。
在本文中,我们将讨论如何创建在后台运行的命令。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。
我们将首先学习如何创建后台进程,然后了解如何终止现有进程。
在 Bash 中使用 & 创建后台进程
在 Bash 脚本中创建后台进程非常容易。 您需要做的就是在命令末尾包含 & 符号。
使命令在后台运行的一般语法是:
YOUR COMMAND &
下面的示例将 Bash 脚本作为后台进程运行。 代码将如下所示:
./example.sh &
执行上述代码后,您将获得以下输出:
[1] 20
在这里,您将看到第三个括号括起来的进程号。
如果您的流程已完成其工作,您将收到如下通知:
[1]+ Done ./example.sh
在 Bash 中终止后台进程
杀死一个后台进程,只需要执行以下步骤。 如果您忘记了进程 ID,您可以使用下面的命令找到您正在运行的进程。
jobs -l
这将输出正在运行的进程的列表。
[1]+ 25177 Running ./example.sh &
从列表中,您可以找到进程 ID 并使用它使用以下命令终止进程。
kill %1
杀死进程的一般语法是:
kill %ProcessID
在 Bash 中使用 disown 保持当前作业运行
即使终端关闭,您也可以保持当前作业在后台运行。 为此,我们将使用名为 disown 的命令。
要使当前作业持续在后台运行,您可以遵循以下示例命令:
disown -h %3
即使终端关闭,我们也会让 id 为 3 的进程保持活动状态。 在这里,-h 是使进程保持活动状态的选项。
此命令的一般语法是:
disown -h %ProcessID
阻止后台进程继续将消息打印到终端
要防止后台进程将消息打印到终端窗口,您可以遵循以下语法:
Your_Command 2>/dev/null &
这将停止在终端窗口中打印消息。
使用 nohup 使命令在后台运行
如果要让一个进程一直在后台运行,即使终端关闭,也必须使用nohup命令。 此命令将执行指定为其参数的其他程序并忽略所有 SIGHUP 信号。
当您关闭终端时,它会发送一个 SIGHUP 信号以关闭控制终端下所有正在运行的进程。 由于此命令忽略了 SIGHUP 命令,因此 nohup 命令运行的进程在被杀死之前一直处于活动状态。
您必须在此命令中包含 &。 您可以按照以下示例操作:
nohup ./MyScript.sh &
此命令将运行后台进程并将其输出写入 nohup.out 文件。
在 Bash 中将正在运行的前台进程转换为后台进程
要将前台进程转移到后台,您必须执行以下两个步骤:
- 首先,您必须按 Ctrl+Z 停止目标进程。
- 使用命令 bg 将停止的进程移动到后台。 您可以遵循以下语法:
bg %ProcessID
本文中使用的所有代码都是用 Bash 编写的。 它只会在 Linux Shell 环境中工作。
相关文章
在 Bash 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。