nohup &

转自:nohup和&的区别 http://bbs.nanjimao.com/thread-470-1-1.html (出处: 南极猫) 

nohup是永久执行

&是指在后台运行

运行 nohup --help
Run COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号”

就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行

&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出

那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &
这样就能使命令永久的在后台执行

举个例子nohup tail -f nohup.out
然后退出登录,再连接,用ps -ef 你会还能看到在运行
ps -ef
root      3457     1  0 18:20 ?        00:00:00 tail -f nohup.out

另外,nohup执行后,会产生日子文件,把命令的执行中的消息保存到这个文件中,一般在当前目录下,如果当前目录不可写,那么自动保存到执行这个命令的用户的home目录下,例如root的话就保存在/root/下

这个我们常在运行命令和脚本中常用到的

 

nohup 应对的就是突然断网或者关闭终端时屏蔽发送给后台任务的 SIGHUP 信号进而使任务不中断继续运行。
exit 或者 logout 命令正常退出的话根本用不着 nohup,你的 & 运行的命令都不会被中断。不信你可以 command & 后 exit,再次登录,ps 查看一下命令肯定还在后台跑。
简单来说,如果你使用的是 exit 或者 logout 命令正常登出,系统只会向前台任务发送 SIGHUP 信号,& 到后台的任务时不会收到 SIGHUP 信号的。如果你强行关闭的窗口或者断网了,系统会向你的前后台任务都发送 SIGHUP 信号,此时如果使用了 nohup 去运行任务,nohup 会屏蔽 SIGHUP 信号,任务也就不会被中断了。

 

posted @ 2017-09-26 09:57  太古丶凶兽  阅读(1803)  评论(0编辑  收藏  举报