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,如下所示。这些任务将继续在shell中运行,并且在退出shell或终端时不会被终止。
nohup ./hello.sh

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

你也可以将输出重定向到指定的文件中:
nohup ./hello.sh > output.txt
要查看输出文件内容,请运行:
cat output.txt

如果需要将标准输出和标准错误都重定向到同一个文件,可以使用以下命令:
nohup ./hello.sh > myoutput.txt 2>&1

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

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

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

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