当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其全部子进程。所以,咱们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。网络
nohup 的用途就是让提交的命令忽略 hangup 信号。code
nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 便可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。通常咱们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。进程
[root@pvcent107 ~]# nohup ping www.ibm.com &
setsid 能够让进程忽略HUP信号,作到命令后台执行的效果。后台
setsid 的使用也是很是方便的,也只需在要处理的命令前加上 setsid 便可。file
若是咱们未加任何处理就已经提交了命令,该如何补救才能让它避免 HUP 信号的影响呢?终端
能够经过做业调度和 disown 来解决这个问题。重定向
用disown -h jobspec来使某个做业忽略HUP信号。di
用disown -ah 来使全部的做业都忽略HUP信号。文件
用disown -rh 来使正在运行的做业忽略HUP信号。ping
当使用过 disown 以后,会将把目标做业从做业列表中移除,咱们将不能再使用jobs来查看它,可是依然可以用ps -ef查找到它。
& 放在启动参数后面表示设置此进程为后台进程