LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 514|回复: 1

[Solved]ssh -D 产生2个ssh进程?

[复制链接]
发表于 2011-5-3 10:53:09 | 显示全部楼层 |阅读模式
过去一直没注意过,最近两天用tcl,Expect写了个脚本自动连接 重连 ssh tunnel (ssh -D),然后做成service ,开机自动启动.
由于service的stop()函数需要.pid文件里面的pid(s)来kill以停止服务,这个脚本本来预计应该有两个进程,一个是expect ,一个是ssh,把这2个进程pid加入.pid就可以正确停止service,但情况并不是这样,实际上有3个进程:

1.expect进程
2.带正常指定的参数的ssh进程
3.不带任何参数的ssh进程

而spawn返回的pid是第三个进程的pid,而不是第二个进程的pid.kill第三个进程不会对已建立的tunnel产生任何影响

这是spawn产生的问题还是ssh -D本身就产生2个进程?:help:help:help
 楼主| 发表于 2011-5-3 15:46:51 | 显示全部楼层
解决了.
openssh 的 -f 参数会在执行连接前 fork()出新进程, 原进程在ps 中显示defunct.
不使用f参数即可.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表