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.out2>&1
将错误输出定向到标准输出,这样无论什么样的输出,都会输出到ls.out
linux中的输出类型如下:0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误&
最后的&,表示让命令在后台运行。一般nohup和&两个一起用
注意点
使用nohup执行命令后,会有一个提示,敲回车确认。然后输入exit退出服务器,这样服务器还会继续执行命令。如果直接关闭终端软件,很可能造成命令被终止。