nohup命令说明

nohup是Linux的一个常用命令,当你想要在退出账户或者关闭终端后进程仍在运行时,就可以使用nohup命令。nohup就是不挂断的意思(no hang up)。

nohup的一般形式为:

1
nohup command >> file 2>&1 &

如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中,否则就是自己指定的文件。

举例

1
nohup ls / >> /var/logs/ls.out 2>&1 &

说明

上面的命令分6部分

  • nohup
    无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
    如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
    如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

    退出状态:该命令返回下列出口值:

  
  126 可以查找但不能调用 Command 参数指定的命令。   
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

  • ls /
    这部分位执行命令,可以是任何要执行的命令

  • 输出定向,>>表示追加写入 >表示覆盖写入

  • /var/logs/ls.out
    这部分是输出文件,当指定了这个参数,nohup将不在输出到nohup.out,而是输出到指定的ls.out

  • 2>&1
    将错误输出定向到标准输出,这样无论什么样的输出,都会输出到ls.out
    linux中的输出类型如下:

    0 表示stdin标准输入
    1 表示stdout标准输出
    2 表示stderr标准错误

  • &
    最后的&,表示让命令在后台运行。一般nohup和&两个一起用

注意点

使用nohup执行命令后,会有一个提示,敲回车确认。然后输入exit退出服务器,这样服务器还会继续执行命令。如果直接关闭终端软件,很可能造成命令被终止。