Linux ssh exit,启动的后台进程不会中止

通常状况下,想要经过终端长时间运行任务,须要使用nohup 或者 screen,若是不使用会怎么样呢?来测试一下
 
描述:
场景1:ssh登陆机器,经过添加(&),启动任务到后台,经过exit命令退出,任务依然存在
 
场景2:ssh登陆机器,经过添加(&),启动任务到后台,直接关闭ssh终端(GUI 直接叉掉窗口),任务终止
 
测试方法,执行如下命令:
ssh root@DEV_TEST
ping baidu.com 2>&1  1>/dev/null &
exit
 
执行exit后,进程变成孤儿,但依然存在:
 
缘由:
bash有以下配置项,默认关闭(经过命令:shopt 查看):
huponexit       off
 
当huponexit 为off时,exit时不会向终端所属任务发SIGHUP信号,激活该选项:
shopt -s huponexit 
 
重复进行上述测试,exit时后台进程退出
 
ps:
能够使用disown, 、对任务屏蔽SIGHUP信号,这样,即便强制关闭终端(或者huponexit开启时exit),任务也不会中止
 
示例:
ssh root@DEV_TEST
ping baidu.com 2>&1  1>/dev/null &
disown -h %1
 
此时强制断开终端(kill 终端进程),进程依旧存在
须要注意,disown后面要加job的编号,若是只有一个job,能够不提供,不然用jobs查看编号
相关文章
相关标签/搜索