nohup 命令 - 将程序以忽略挂起信号的方式运行起来

使用场景:一般我们都会使用 XShell 等终端模拟软件连接 Linux 服务器,但是在运行比较长时间的脚本(特别是一些 HiveQL 脚本)的时候,往往都要跑上个把小时甚至更长,这期间如果关闭终端窗口,运行的进程就会被杀死。使用 nohup 命令可以使进程不受终端窗口的影响。

1 使用实例

使用 nohup 命令提交作业,在缺省情况下该作业的所有输出都被重定向到一个名为 nohup.out 的文件中(默认在当前目录下,如果文件不可写,输出重定向到 $HOME/nohup.out 文件中),除非另外指定了输出文件:

nohup command > myout.file 2>&1 &

之后可以使用命令tail -f myout.file实时查看 command 的运行情况。

2 为什么nohup命令最后要加个 & 呢

这里要说明下 nohup& 的功能区别:

& 的意思是在后台运行,用 Ctrl+C 无法杀死后台进程。但是如果 XShell 关闭的话,后台进程同样会被杀死。

相反,如果 nohup 最后不加 & ,使用 Ctrl+C 是可以杀死 command 的。所以要让进程真正不受 XShell 中 Ctrl+C 和关闭终端窗口的影响,需要二者组合使用。

3 参考文章

http://man.linuxde.net/nohup

https://blog.csdn.net/stpeace/article/details/76389073

你可能感兴趣的:(Linux,nohup)