将进程发送到后台 Linux将进程发送到后台 Linux将进程发送到后台 Linux将进程发送到后台 Linux
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

将进程发送到后台 Linux

在使用图形桌面环境时,我们很少担心后台进程。如果我们有一个进程在前台运行,我们可以快速生成另一个终端窗口并继续我们的工作。

但是,如果您使用的是 SSH 等原始终端 shell,您通常会担心占用并阻止 shell 直到完成的进程,尤其是在长时间运行的作业中。这就是后台进程和前台进程的概念发挥作用的地方。

本教程将讨论什么是后台进程和前台进程,包括在 Linux 中创建和管理它们。

什么是进程?

请允许我从基础层面开始:什么是流程?

在Linux中,进程是程序的一个实例。通常,这意味着 shell 中的任何命令或可执行文件都是一个进程。

主要有两种类型的流程:

  • 前台进程

  • 后台进程

前台进程主要是我们启动并与之交互的典型应用程序。 Gnome 中的 nautilus 文件管理器就是一个例子。大多数情况下,我们可以从 shell 或桌面环境启动前台进程。

另一方面,后台进程在后台运行,不需要用户输入或交互。一个例子是任何典型的 Linux 守护进程。

如何在后台运行进程

假设我们有一个进程,在运行时占用 shell 会话并阻止我们执行命令,直到它退出。

例如,如果我们在 shell 中运行 Firefox 浏览器,它将占用会话直到进程终止。

$ firefox

正如你所看到的,只要 Firefox 正在运行,shell 提示符就不可用,我们无法再执行任何命令。

为了解决这个问题,我们可以通过两种方式来实现:

1:使用与号 (&)

第一种方法是使用 & 符号。这告诉 shell 在后台运行 & 符号之前的任何命令。

一个例子:

firefox &

在这种情况下,该进程在后台执行并生成新的 shell 提示符,允许我们继续执行命令。

它还给出了两个数字标识符。方括号中的第一个是作业 ID,下一个是进程 ID。

2:使用CTRL+Z,bg命令。

将进程置于后台的下一个方法是使用快捷键 CTRL + Z。这可以阻止进程阻塞 shell。然后您可以使用 bg 命令将其推送到后台。

例如,首先启动 Firefox:

$ Firefox

当进程运行时,按 CTRL + Z。这将返回 shell 提示符。最后输入bg命令将进程推送到后台。

如何显示后台进程

要在后台查看和管理进程,请在 shell 中使用 jobs 命令。这将显示当前终端会话中的后台作业。

例如:

$ jobs

后台作业的输出示例:

要将后台运行的进程调到前台,请使用 fg 命令,后跟作业 ID。

例如,要将 Firefox 作业置于前台,我们使用以下命令:

$ fg %1

要再次置于后台,请按 CTRL + Z,然后按 bg 命令。

如何在 Shell 死亡后使进程持续存在

当您在后台运行进程并且您的 shell 会话终止时,与其关联的所有进程都会终止,这可能会出现问题,尤其是在 SSH 会话时。

但是,如果您使用终端多路复用器(例如 tmux 或 screen),这并不是一个太大的问题,因为在这种情况下,您可以简单地重新附加会话。

但是,如果您在没有多路复用器的情况下运行 shell 会话,则可以使用 nohup 命令。

nohup 命令不受挂起影响,并且可以忽略发送到进程的 SIGHUP 信号。

因此,如果您使用 nohup 运行命令,即使 shell 会话意外终止,它也会继续运行。

例如,要使用 nohup 运行 Firefox,请使用以下命令:

nohup Firefox &

这将在后台运行该进程,并持续 shell 终止。

您可以运行新的终端会话并查看后台作业。您将看到该进程仍在后台运行。

结论

在本教程中,我们讨论了在 Linux 中运行进程并将进程发送到后台的各种方法。我们还介绍了如何将后台进程带入后台并在 shell 终止时保持挂起。

©2015-2025 艾丽卡 support@alaica.com