当前位置: 技术问答>linux和unix
为什么linux下sshd被kill会导致所有子进程被终止
来源: 互联网 发布时间:2016-11-19
本文导语: 问题描述: 使用securecrt远程登陆,打开两个终端,在其中一个(终端A)运行测试程序a.out;在另一个(终端B)中使用pstree可以看到 |-sshd(2555)-+-sshd(16568)---bash(16572)---pstree(16862) | ...
问题描述:
使用securecrt远程登陆,打开两个终端,在其中一个(终端A)运行测试程序a.out;在另一个(终端B)中使用pstree可以看到
|-sshd(2555)-+-sshd(16568)---bash(16572)---pstree(16862)
| `-sshd(16635)---bash(16637)---a.out(16860)---a.out(16861)
如果在终端B中运行 kill -9 16635 后,则标红的这些进程全会终止掉
请教各方高人,这是为何?
PS: 粗略看了一下sshd的实现代码,和sshd自身应该没什么关系,父进程自己都挂了怎么会来得及处理子进程
莫非在kill -9 16635的时候,内核会检测将要结束的进程是sshd,然后干掉他的子进程?
费解啊!费解
使用securecrt远程登陆,打开两个终端,在其中一个(终端A)运行测试程序a.out;在另一个(终端B)中使用pstree可以看到
|-sshd(2555)-+-sshd(16568)---bash(16572)---pstree(16862)
| `-sshd(16635)---bash(16637)---a.out(16860)---a.out(16861)
如果在终端B中运行 kill -9 16635 后,则标红的这些进程全会终止掉
请教各方高人,这是为何?
PS: 粗略看了一下sshd的实现代码,和sshd自身应该没什么关系,父进程自己都挂了怎么会来得及处理子进程
莫非在kill -9 16635的时候,内核会检测将要结束的进程是sshd,然后干掉他的子进程?
费解啊!费解
|
你把16635关闭后 那个连接就断了啊 你终端不就退出了么
|
终端退出会发出信号,是你用终端启动的那些程序全部会随着session的退出收到退出信号,如果它们不是用特殊方式启动的,将会随之退出
|
在运行的时候加nohup
nohup a.out
nohup a.out