免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5465 | 回复: 3
打印 上一主题 下一主题

<求助>一个用SSH执行远程调用命令后,SSH连接不断开的问题!!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-02 19:03 |只看该作者 |倒序浏览
有两台机器:A和B
A:kernel version 2.4.22。 GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
B:kernel version 2.6.18。 GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)

从A机器上使用脚本,通过SSH的方式调用B机器上的一个脚本。两台机器之间已经设置了信任关系,在连接过程中不需要输入密码。

在A上的调用脚本的code如下:
  1. ssh root@$Machine_B_IP  $PATH/$SCRIPT_NAME
复制代码
在B上执行的脚本$SCRIPT_NAME,脚本中有一行是去开启某个服务,这个服务提供start/stop/status/restart等参数,如:
  1. /etc/init.d/$SERVICE_NAME  {start|stop|restart|status}
复制代码


问题
在A上使用
  1. ssh root@$Machine_B_IP  $PATH/$SCRIPT_NAME
复制代码
在B上的$SCRIPT_NAME中运行
  1. etc/init.d/$SERVICE_NAME  start
复制代码
当$SERVICE_NAME服务运行之后,在A上的SSH连接却不断开。结果使得之后的脚本不能继续运行。在如果$SEVER_NAME运行的是stop或是status,A上的SSH连接就可以正常的断开。
而且服务$SERVICE_NAME的所有参数,在本地机器B上都可以正常的使用和结束。

我比较了status,stop和start的脚本运行状态:
status

  1. + return 0
  2. + RETVAL=0
  3. + exit 0
复制代码


stop

  1. + echo
  2. + '[' 0 = 0 ']'
  3. + rm -f  $file_pid
  4. + exit 0
复制代码


start

  1. + echo
  2. + '[' 0 = 0 ']'
  3. + touch $status_file
  4. + return 0
  5. + exit 0
复制代码


似乎所有的状态都可以结束,但不知道为什么只有在运行start时,A上的SSH连接在运行完程序后还不断开,退出?

[ 本帖最后由 sailorhzr 于 2008-7-3 09:53 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-07-03 17:57 |只看该作者
好像大家对这个问题不太感兴趣!

自己想了一个土办法绕开了不能断开连接的问题,但还是没有明白为什么用SSH远程执行命令后,自己不能自动断开连接!

论坛徽章:
0
3 [报告]
发表于 2008-07-30 16:19 |只看该作者
根本原因呢?

论坛徽章:
0
4 [报告]
发表于 2008-07-30 18:32 |只看该作者
setsid /etc/init.d/$SERVICE_NAME  start &
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP