📅  最后修改于: 2020-12-07 08:19:13             🧑  作者: Mango
nohup表示没有挂断,它是一个Linux实用程序,即使退出终端或外壳程序也可以保持进程运行。它防止进程获取SIGHUP信号(信号挂断);这些信号被发送到进程以终止或结束进程。
通常,当我们从终端退出时,默认情况下所有正在运行的进程都会终止。但是,它显示正在运行的进程的警告。如果一个过程花费的时间比预期的多,我们需要完成它。在这种情况下,nohup命令是一种方便的工具,可用于在后台继续运行进程。 nohup命令的最佳用法是在内存检查,同步,重新启动服务器等方面。当我们通过ssh运行程序时,这也是有利的。
在ssh连接的情况下,如果连接中断,则所有正在运行的进程都会终止,并且我们可能会丢失数据。 nohup命令解决了这个问题。它忽略所有挂断信号,并允许该过程继续进行。
句法:
nohup命令可以通过两种方式使用:
nohup command arguments
要么
nohup options
让我们通过示例了解nohup命令的不同用法:
它是Linux系统的默认命令行实用程序。因此,我们不需要安装它。我们可以通过执行以下命令来检查安装的版本:
nohup --version
上面的命令将显示已安装的版本。考虑以下输出:
如果要在退出终端后运行进程,请执行nohup命令,然后执行该进程。这是一个简单的过程。该进程将继续运行,不会被杀死。
让我们举一个例子来了解nohup的工作原理。我们有一个文件'hello.sh ',我们将使用nohup命令打开它。执行以下命令:
nohup cat hello.sh
现在,即使关闭终端,cat命令也将完全执行。考虑以下输出:
从上面的输出中我们可以看到,它将创建一个文件“ nohup.out” ,并将输出附加到该文件。
要显示输出,请执行以下命令:
cat nohup.out
考虑以下输出:
此外,我们还可以将输出重定向到指定文件。为此,请执行以下命令:
nohup cat hello.sh > newfile
上面的命令会将输出重定向到指定的文件“ newfile”。要验证输出,请执行以下命令:
cat newfile
考虑以下输出:
要在后台启动进程,请在命令后使用“&”符号。它将在后台执行我们的过程。例如,如果我们要ping javatpoint.com,请执行以下命令:
nohup ping javatpoint.com &
上面的命令将使用javatpoint.com对我们进行ping操作,并将进程重定向到后台。要检查进程,请执行pgrep命令,如下所示:
pgrep -a ping
考虑以下输出:
要终止进程,请使用给定的PID执行kill命令。
Kill 14085 14546
上面的命令将杀死后台进程。考虑以下输出: