📜  Linux 中的 nohup 命令示例

📅  最后修改于: 2022-05-13 01:57:34.903000             🧑  作者: Mango

Linux 中的 nohup 命令示例

Linux 中的每个命令在执行时都会启动一个进程,该进程在退出终端时会自动终止。假设,您正在通过 SSH 执行程序,如果连接断开,会话将终止,所有执行的进程都将停止,您可能会面临巨大的意外危机。在这种情况下,在后台运行命令对用户非常有帮助,这就是nohup 命令发挥作用的地方。 nohup(No Hang Up)是 Linux 系统中的一个命令,即使在从 shell/终端注销后也会运行该进程。

通常,Linux 系统中的每个进程都会发送一个SIGHUP(信号挂起) ,它负责在关闭/退出终端后终止进程。 Nohup 命令阻止进程在关闭或退出终端/外壳程序时接收此信号。使用 nohup 命令启动或执行作业后,用户将无法使用 stdin ,并且 nohup.out文件将用作stdoutstderr的默认文件。如果 nohup 命令的输出被重定向到某个其他文件,则不会生成nohup.out 文件。

句法:

nohup command [command-argument ...]

使用 nohup 命令

1.检查Nohup的版本:

可以使用以下命令检查 nohup 命令的版本。



$ nohup --version

输出:

nohup 版本

2.要运行前台的命令

如果未提及任何重定向文件名,则在前台运行命令并将命令输出重定向到nohup.out 文件。

$ nohup bash geekfile.sh

输出:

nohub bash

将输出重定向到output.txt文件:

$ nohup bash geekfile.sh > output.txt

输出:



nohu bash 输出.txt

3. 在后台运行命令(使用“&”):

要在后台运行命令,在命令末尾附加“&”符号。执行后,在后台运行命令后不会返回shell命令提示符。可以使用 fg命令将其带回前台。

$ nohup bash geekfile.sh &
fg

输出:

nohup bash 脚本

注意:方括号内的数字代表作业 id ,旁边的数字是进程 id

4. 在后台运行多个命令:

nohup 命令可用于在后台运行多个命令。

$ nohup bash -c 'commands'

例子:

$ nohup bash -c 'cal && ls'

输出:

在后台运行多个命令:

在这里,输出将默认存储在nohup.out 中。要重定向它,请键入:

$ nohup bash -c 'commands' > filename.txt

例子:

$ nohup bash -c 'cal && ls' > output.txt

输出:

将输出存储在输出文件中