Linux中的Nohup命令

时间:2020-02-23 14:40:09  来源:igfitidea点击:

退出Linux系统的shell时,所有正在运行的进程通常会终止或者挂断。
那么,如果您仍要保持进程运行(甚至退出shell /终端),该怎么办?这是nohup命令出现的地方。

Nohup命令

Nohup(不挂机的简称)是Linux系统中的一个命令,即使退出shell或者终端后,该命令仍可保持进程运行。

Nohup阻止进程或者作业接收SIGHUP(信号挂起)信号。
这是在关闭或者退出终端时发送到进程的信号。
在本教程中,我们看一下nohup命令并演示如何使用它。

Nohup命令语法

Nohup命令的语法如下:

nohup command arguments

或者

nohup options

让我们看看命令如何发挥作用

检查Nohup的版本

您可以使用以下语法从检查Nohup的版本开始

nohup --version

使用Nohup启动进程

如果要保持进程/作业运行,请在命令前加上" nohup",如下所示。
这些作业仍将继续在Shell中运行,并且在退出Shell或者终端时不会被杀死。

nohup ./hello.sh

在上面的输出中,命令的输出已保存到nohup.out中,以验证此运行,

cat nohup.out

此外,您可以选择将输出重定向到另一个文件,如图所示

nohup ./hello.sh > output.txt

再次,查看文件运行

cat output.txt

要将文件重定向到标准错误并输出,请使用> filename 2>&1属性,如下所示

nohup ./hello.sh > myoutput.txt >2&1

使用Nohup在后台启动进程

要在后台启动进程,请在命令末尾使用"&"符号。
在此示例中,我们要ping google.com并将其发送到后台。

nohup ping google.com &

要在恢复shell程序时检查进程,请使用" pgrep"命令,如下所示

pgrep -a ping

如果要停止或者终止正在运行的进程,请使用" kill"命令,后跟进程ID,如下所示

kill 2565

总结

  • 使用nohup命令运行的所有进程,即使退出shell也会忽略SIGHUP信号。

  • 使用nohup命令启动或者执行作业后,用户将无法使用stdin。

  • 默认情况下," nohup.out"用作stdout和stderr的默认文件。