nohup

nohup

犀牛的进程监控和拉起功能是通过一个脚本实现的;
那时候我还不理解,脚本会fork一个进程,但为啥一直在后台运行,肯定有故事!
后来我观察到他的启动方式,nohup monitor_process_sdo.sh > /dev/null 2>&1 &
其中,这里的nohup 是一个专门的命令,下面是他的详解:
 
nouhp:
语法:nohup Command [ Arg … ] [ & ]
用途: 不挂断地运行命令。
nohup命令运行由Command 参数和任何相关的Arg参数指定的命令,忽略所有挂断信号,在注销后使用nohup命令运行后台的程序,添加“”&“”符号在命令的结尾处;
nohup 是 no hang up 的缩写,就是不挂断的意思
nohup命令:如果你正在运行一个进程,而且你需要在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
 
nohup和&的区别
&:指在后台运行
nohup:不挂断的运行,注意并没有后台运行的功能,用nohup命令可以将命令永久的执行下去,和用户终端没有关系,
那么我们可以巧妙的把它们结合起来使用:
nohup command &
这样就能使命令永久的在后台运行
 
sh test.sh &
将sh test.sh 任务放在后台,关闭shell,对应的任务也跟着停止;
nohup test.sh
将sh test.sh任务放在后台,关闭标准输入,终端不再接受任何输入,重定向和标准错误输出到当前的nohup.out文件,即使关闭终端当前session依然继续执行;
nohup test.sh &
将test.sh 任务放在后台,但是依然可以使用标准输入,终端能够接受任何输入,重定向和标准错误输出到当前的nohup.out文件,即使关闭终端当前session依然继续执行。
原文地址:https://www.cnblogs.com/storyawine/p/13370129.html