Linux Nohup命令使用详解:后台运行进程不中断的技巧

当退出Linux系统的shell时,通常会终止或挂起所有正在运行的进程。那么如果仍希望保持进程运行而退出shell/终端,该怎么办呢?这就是nohup命令派上用场的地方。

Nohup 命令

Nohup,即”no hang up”(不挂断)的缩写,是Linux系统中的一个实用命令,可以在用户退出终端后使进程继续运行。Nohup能够阻止进程或任务接收SIGHUP(挂断信号),该信号在关闭或退出终端时会被发送给进程。在本指南中,我们将详细介绍nohup命令并演示其使用方法。

Nohup命令的语法

Nohup 命令的基本语法如下:

nohup 命令 参数

或者

nohup 选项

下面让我们看看这个指令如何发挥作用。

检查 Nohup 版本

您可以通过以下命令检查Nohup的版本信息。

nohup --version
检查nohup命令版本

使用Nohup启动一个进程

如果你想让进程或任务在后台持续运行,只需在命令前加上nohup,如下所示。这些任务将继续在shell中运行,并且在退出shell或终端时不会被终止。

nohup ./hello.sh 
使用nohup命令运行常规命令

执行上述命令后,输出将被重定向到默认的nohup.out文件中。你可以使用以下命令查看输出内容:

cat nohup.out
查看Nohup输出文件

你也可以将输出重定向到指定的文件中:

nohup ./hello.sh > output.txt

要查看输出文件内容,请运行:

cat output.txt
将Nohup输出重定向到文本文件

如果需要将标准输出和标准错误都重定向到同一个文件,可以使用以下命令:

nohup ./hello.sh > myoutput.txt 2>&1 
重定向标准输出和标准错误到文件

使用Nohup在后台启动一个进程

使用&符号可以将进程放在后台运行。在这个例子中,我们使用ping命令测试google.com的连通性,并将其送到后台运行。

nohup ping google.com &
使用Nohup在后台运行进程

你可以使用pgrep命令查找正在运行的ping进程:

pgrep -a ping
使用Pgrep查找Google Ping进程

如果需要终止该进程,可以使用kill命令加上进程ID(PID):

kill 2565
使用Kill命令终止进程

摘要

  1. 所有使用nohup命令运行的进程即使在退出shell时也将忽略SIGHUP信号。
  2. 一旦使用nohup命令开始或执行作业,用户将无法使用标准输入与该进程交互。
  3. 默认情况下,nohup.out文件被用作标准输出和标准错误的默认输出文件。
bannerAds