总结

如果我们正在运行一个进程并且我们认为它不会在我们当天注销时完成,请使用 nohup 命令。
当我们退出帐户时,Nohup 将继续处理。
Nohup 意思是 no hang up(不挂断)。

on  it road.com

例子

1. 不指定输出文件运行 nohup

让我们做一个例子并测试它在我们注销后确实继续工作。
我们将启动一个名为 script.sh 的脚本。
脚本的内容如下:

# cat script.sh
#!/bin/sh
while(true)
do
	echo "Hello World!"
	sleep 10
done

让我们使用 nohup 命令在 backgroupd 中运行脚本:

# nohup script.sh & 
[1] 179 
$ nohup: appending output to `nohup.out`

正如我们在上面看到的,我们没有指定输出文件。
因此,默认情况下,标准输出和标准错误会进入调用脚本所在目录中的 nohup.out 文件。
还有数字 179 指定了作业的进程 ID(PID)。
可以在“ps -ef”命令输出中验证此 PID,如下所示。

现在退出 shell,重新登录,然后运行以下命令:

$ ps x | grep script.sh
179  ?   S N  0:01 sh /root/script.sh 
506  p2 S     0:00 grep script.sh

该脚本仍在工作。
如果系统不支持 ps x,请使用“ps -ef | grep ps1”。
我们还可以检查输出文件 nohup.out 以获得更多确认。

# cat nohup.out
Hello World!
Hello World!
Hello World!
Hello World!
...

运行 nohup 指定输出文件

现在上面的脚本也可以运行 nohup 命令并指定一个自定义输出文件,如下所示:

# nohup script.sh > /tmp/script.out 2>&1
[1] 14235
Nohup 命令示例

nohup 实用程序执行命令行,以便在我们注销后,该命令继续运行。
换句话说, nohup 使进程忽略 SIGHUP 信号。
根据本地 shell 的配置方式,当我们注销时,在没有 nohup 的情况下启动并在后台运行的进程可能会被终止。

运行 nohup 命令的语法

运行 nohup 命令的基本命令语法如下:

# nohup command_with_options &

除非我们另外指定

# nohup command > myout.file 2>&1

它将所有输出发送到文件 myout.file。

保存 nohup 命令的输出

如果不重定向使用 nohup 执行的命令的输出,则标准输出和标准错误都会发送到工作目录中名为 nohup.out 的文件。
如果我们没有工作目录的写权限, nohup 会将输出发送到 ~/nohup.out 。

我们还可以将输出发送到我们指定的任何其他文件,如上面命令的语法中所示。

日期:2020-09-17 00:14:29 来源:oir作者:oir