红联Linux门户
Linux帮助

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

发布时间:2015-09-13 15:45:39来源:linux网站作者:子子午

一般情况下,想要通过终端长时间运行任务,需要使用nohup 或者 screen,如果不使用会怎么样呢?来测试一下。


描述:
场景1:ssh登录机器,通过添加(&),启动任务到后台,通过exit命令退出,任务依然存在
 
场景2:ssh登录机器,通过添加(&),启动任务到后台,直接关闭ssh终端(GUI 直接叉掉窗口),任务终止


测试方法,执行以下命令:
ssh root@DEV_TEST
ping baidu.com 2>&1  1>/dev/null &
exit
 
执行exit后,进程变成孤儿,但依然存在:

Linux ssh 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查看编号。


如何使用xkill终结Linux桌面上的进程?:http://www.linuxdiyf.com/linux/13385.html

如何使用xkill命令杀掉Linux进程/未响应的程序:http://www.linuxdiyf.com/linux/12518.html

Linux kill命令参数及用法详解-Linux终止进程命令:http://www.linuxdiyf.com/linux/3640.html

Linux下批量Kill多个进程:http://www.linuxdiyf.com/linux/7765.html

Linux中Kill进程的N种方法:http://www.linuxdiyf.com/linux/6368.html