Bash Nohup 与 & 的区别
这篇简短的文章介绍了通过 Bash 在后台运行 Linux 进程的 nohup 命令和 &
控制运算符。 此外,我们将进一步研究 nohup 和 &
之间的主要区别。
在后台运行 Linux 进程
Linux 提供了两种在后台运行进程或命令的方法。
-
仅使用与号 (
&
) 控制运算符。 -
将 nohup 命令与
&
结合使用。
符号 (&) 控制运算符
我们可以使用 & 控制运算符在后台异步运行任何命令。
考虑以下命令。
sleep 10
sleep
命令添加特定时间的延迟。 当我们运行 sleep 10 命令时,它会暂停 Bash 终端 10 秒,我们不能在终端上运行任何其他命令。
现在,考虑以下命令。
sleep 10 &
上面命令显示进程id(PID),sleep 10在后台异步执行。 执行控制返回命令终端,不等待睡眠结束。
现在,我们可以在同一终端上与后台睡眠命令并发运行任何其他命令。
我们可以使用以下命令将后台进程移动到前台。
fg
nohup 命令
nohup
命令运行任何其他命令或进程。 它代表“no hang-up”,它可以防止关联的进程获得 SIGHUP 信号。
如果你想在终端关闭后仍然执行命令,你可以使用 nohup CommandName。
但是,如果我们想在后台运行一个命令,并且执行控制立即返回到终端,我们必须使用下面的命令。
nohup sleep 10 &
上面的命令在后台运行 sleep 10 命令并立即返回控制权,以便我们可以在同一终端上运行任何其他命令。
我们可以使用 pgrep 命令查看后台运行的命令,如下所示:
pgrep -a [Command]
pgrep
命令搜索命令并显示进程 ID (PID) 以及正在执行的命令详细信息。
例如,pgrep -a sleep
会将相关的后台进程显示为:
PID sleep 10
在这里,PID 表示分配给睡眠命令的进程 ID。
控制运算符 & 和 nohup 命令之间的区别
以下是使用 &
和 nohup
在后台运行命令或进程之间的一些区别。
nohup 可以捕获挂断信号(SIGHUP),而 & 则不能。 SIGHUP 信号用于在进程启动的终端关闭时向进程发送信号。
通常,进程或命令使用 & 在后台运行,直到存在从中启动此命令或进程的 shell。 一旦 shell 终止,所有关联的命令或在后台运行的进程 & 也将终止。
当终端退出时,使用 SIGHUP (kill SIGHUP <pid>)
的挂断信号会终止该终端的所有子命令或子进程。 但是,这可以使用 nohup 来防止。
nohup 命令捕获 SIGHUP 信号,不让它到达实际命令。 因此,限制命令在 Bash 终端退出时终止。
&
和 nohup
之间的另一个区别是关于 stdout/stderr 的重定向。
&
运算符不会自动重定向 stdout/stderr,而是将命令的输出直接显示到终端。 但是,nohup 将 stdout/stderr 重定向到位于 $HOME 的文件 nohup.out 中。
相关文章
在 Bash 中重命名文件
发布时间:2023/06/09 浏览次数:50 分类:操作系统
-
在本文中,我们将介绍一种方法,通过它您可以轻松地重命名目录中的所有文件。 此外,我们将看到必要的示例和解释,以使主题更容易理解。在 Bash 中使用 mv 命令重命名文件
在另一个 Bash 脚本中包含脚本文件
发布时间:2023/06/09 浏览次数:79 分类:操作系统
-
本文讨论了将一个 Bash 脚本文件包含到另一个脚本文件中的不同方法。在 Bash 脚本中包含文件 在 Bash 中包含或重用脚本非常简单。
使用 Bash 将文件读入数组
发布时间:2023/05/31 浏览次数:81 分类:操作系统
-
本篇文章介绍了一些使用 Bash 从文件中读取行并将其加载到数组中的方法。首先,我们将看到 readarray 方法。 之后,我们将研究一种更通用的将文件读入 Bash 数组的方法。
在 Bash 中从文件中删除行
发布时间:2023/05/31 浏览次数:168 分类:操作系统
-
在 Bash 脚本中,有几种方法可以从文件中删除一行。 本文将讨论从文件中删除不必要行的不同方法。使用 tail 删除文本文件的一行
在 Bash 中查找文件大小
发布时间:2023/05/31 浏览次数:109 分类:操作系统
-
在 Bash 脚本中,有几种方法可以找到文件的大小。 本文将展示如何通过 Bash 查找文件的大小。我们将在这里讨论三种不同的方法,您可以根据自己的需要选择最合适的一种。
在 Bash 中删除空行
发布时间:2023/05/31 浏览次数:113 分类:操作系统
-
使用文件时,您可能需要在显示文件之前从文件中删除空行。 在 Bash Script 中,有几种方法可以从文件中删除空行。在 Bash 中删除空行的文件
在 Bash 中递归查找文件
发布时间:2023/05/31 浏览次数:197 分类:操作系统
-
这篇文章是关于 Bash 中的 find 命令的。 本文将讨论在 Bash 中使用 find 命令查找特定类型文件的方法。在 Bash 中使用 find 命令递归查找文件 用于导航文件层次结构的命令行工具是 Linux 中的 find
在 Bash 中将文件读入变量
发布时间:2023/05/31 浏览次数:169 分类:操作系统
-
本文将展示我们如何在变量中获取文件。 此外,我们将看到必要的示例和适当的解释,以使主题更容易理解。要保存到变量中的文本文件
在 Bash 中检查文件是否为空
发布时间:2023/05/31 浏览次数:80 分类:操作系统
-
通常需要检查文件是否为空,幸运的是,有一些简单的方法可以在终端上使用 Bash 或什至使用 Bash 脚本来检查。在 Bash 中使用带有 -s 选项标志的测试命令来检查文件是否为空