- 论坛徽章:
- 0
|
有两台机器: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如下:- ssh root@$Machine_B_IP $PATH/$SCRIPT_NAME
复制代码 在B上执行的脚本$SCRIPT_NAME,脚本中有一行是去开启某个服务,这个服务提供start/stop/status/restart等参数,如:
- /etc/init.d/$SERVICE_NAME {start|stop|restart|status}
复制代码
问题:
在A上使用- ssh root@$Machine_B_IP $PATH/$SCRIPT_NAME
复制代码 在B上的$SCRIPT_NAME中运行- etc/init.d/$SERVICE_NAME start
复制代码 当$SERVICE_NAME服务运行之后,在A上的SSH连接却不断开。结果使得之后的脚本不能继续运行。在如果$SEVER_NAME运行的是stop或是status,A上的SSH连接就可以正常的断开。
而且服务$SERVICE_NAME的所有参数,在本地机器B上都可以正常的使用和结束。
我比较了status,stop和start的脚本运行状态:
status
- + return 0
- + RETVAL=0
- + exit 0
复制代码
stop
- + echo
- + '[' 0 = 0 ']'
- + rm -f $file_pid
- + exit 0
复制代码
start
- + echo
- + '[' 0 = 0 ']'
- + touch $status_file
- + return 0
- + exit 0
复制代码
似乎所有的状态都可以结束,但不知道为什么只有在运行start时,A上的SSH连接在运行完程序后还不断开,退出?
[ 本帖最后由 sailorhzr 于 2008-7-3 09:53 编辑 ] |
|