「nohup(1)」-

执行命令,并忽略HUP信号

命令语法格式

nohup COMMAND [ARG]…

nohup OPTION

命令描述

执行COMMAND,并忽略HUP信号(SIGHUP,1)。因此,在终端退出后该命令COMMAND可以继续在后台运行。

如果标准输入是终端,请重定向终端,以便终端会话不会错误地将终端用于命令。使替代文件描述符不可读,可以将错误地从标准输入读取的数据命令可以报告出错误。这个重定向是一个GNU扩展;如果要移植到非GNU主机中,程序中可以使用’nohup command [arg] … 0>/dev/null’来代替。

如果标准输出是终端,则命令的标准输出将追加到当前目录下的nohup.out文件;如果当前目录下不能写入,则将其追加到文件$HOME/nohup.out;如果前面的两个都无法写入,则不运行该命令。无论当前的umask设置如何,由nohup创建的nohup.out文件都只能由所属用户进行读写。

如果标准错误是终端,它通常被重定向到与标准输出相同的文件描述符。但是,如果标准输出关闭,则标准错误终端输出将被追加到nohup.out文件,如上所述。

要将命令的输出捕获到nohup.out以外的文件,可以输出重定向。例如,要捕获make的输出:

# nohup make > make.log

命令nohup不会自动将它在后台运行的命令放入;你必须明确地做到这一点,可以通过使用’&’结束命令行。另外,nohup不会改变命令的优先级;这需要使用nice,例如’nohup nice command’。

命令支持的选项及含义

–help
显示帮助并退出。

–version
显示版本信息。

注意事项

你所使用的Shell中可能有内建的nohup指令,直接执行nohup可能会不是本文描述的版本。可以使用/usr/bin/nohup手动指定使用非内建的nohup,或者使用env nohup…来执行。有关内建的nohup指令所支持的选项的详细信息,请参阅你所使用的Shell的文档。

命令参数COMMAND不能是内建的命令,参考「内置的特殊实用程序」一文中的说明。

如果你的命令使用了‘&’符号直接在后台运行,那并没有必要使用nohup命令。通常使用nohup的情景是:我们的命令运行在前台,而由于终端的异常退出(或远程连接断开)会导致命令的退出,这时候你应该使用nohup,即使终端退出,命令也不会退出。

退出状态

125 如果nohup自身失败,并且没有设置POSIXLY_CORRECT环境变量。如果设置了POSIXLY_CORRECT环境变量,则nohup的内部故障将会以127状态退出。

126 找到命令COMMAND,但是无法执行。

127 无法找到命令COMMAND。

其他的退出状态为COMMAND的退出状态。

相关手册

查看在线手册:http://www.gnu.org/software/coreutils/nohup

查看info手册:info ‘(coreutils) nohup invocation’

参考文献

更新日志

  • 08/11/2018 创建文章。
  • 06/24/2018 文章内容调整。
  • 07/22/2018 更新注意事项中的说明,并调整文章结构。