求大神告知!!java代码能控制zookeeper停止,不能控制启动

2014Team 2015-06-07 11:03:31
zookeeper在linux服务器上,我通过java代码来控制启动与停止。
奇怪的是能控制停止,不能控制启动,大神们、高手们指教。
说明:


/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh start

/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh stop

/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh status

我在linux通过执行成功


但是java程序的话
//ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh start");//失败
// ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh satus");//失败
ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh stop");//执行成功

java代码:

package com.common.remote;

import java.io.IOException;


import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class TestRemoteConnect {

public static void main(String[] args) {

String hostname = "";
String username = "";
String password = "";
//指明连接主机的IP地址
Connection conn = new Connection(hostname);
Session ssh = null;
try {
//连接到主机
conn.connect();
//使用用户名和密码校验
boolean isconn = conn.authenticateWithPassword(username, password);
if (!isconn)
{
System.out.println("用户名称或者是密码不正确");
}
else
{
System.out.println("已经连接OK");
ssh = conn.openSession();
// ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh start");//失败
// ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh satus");//失败
ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh stop");//执行成功
System.out.println("执行ok "+ssh.getExitStatus());

//将Terminal屏幕上的文字全部打印出来
InputStream is = new StreamGobbler(ssh.getStdout());
BufferedReader brs = new BufferedReader(new InputStreamReader(is));
while (true)
{
String line = brs.readLine();
if (line == null)
{
break;
}
System.out.println(line);
}
}

} catch (IOException e)
{
e.printStackTrace();
} finally
{
//连接的Session和Connection对象都需要关闭
ssh.close();
conn.close();
}

}

}









...全文
301 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjyykakaxi 2017-03-09
  • 打赏
  • 举报
回复
楼主
jjyykakaxi 2017-03-09
  • 打赏
  • 举报
回复
具体怎么加求助
2014Team 2015-06-09
  • 打赏
  • 举报
回复
终于研究出来了,尝试来了很多结果。最后在zkServer.sh文件加入 JAVA_HOME=/usr/local/java/jdk1.7.0_76 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH 搞定! 非常感谢大家的帮助,谢谢!!
suciver 2015-06-08
  • 打赏
  • 举报
回复
启动失败zk会有失败日志的,你看看日志输出什么
MOMI_CAFE 2015-06-08
  • 打赏
  • 举报
回复
之前看过一文 http://www.csdn.net/article/2015-06-02/2824824 认识到其强大之处~
2014Team 2015-06-08
  • 打赏
  • 举报
回复
第一步: [comp@sv0325 bin]$ ./zkServer.sh start JMX enabled by default Using config: /opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [comp@sv0325 bin]$ ./zkServer.sh status JMX enabled by default Using config: /opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: standalone [comp@sv0325 bin]$ 第二步: 执行java代码 ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh stop"); 停止成功 第三步: [comp@sv0325 bin]$ ./zkServer.sh status JMX enabled by default Using config: /opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [comp@sv0325 bin]$ ps -ef|grep zookeeper-3.4.6 comp 29674 29333 0 11:24 pts/3 00:00:00 grep zookeeper-3.4.6 [comp@sv0325 bin]$ 第四步: 执行java代码启动 ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh start"); 第五步 [comp@sv0325 bin]$ ./zkServer.sh status JMX enabled by default Using config: /opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [comp@sv0325 bin]$ ps -ef|grep zookeeper-3.4.6 comp 29769 29333 0 11:25 pts/3 00:00:00 grep zookeeper-3.4.6 [comp@sv0325 bin]$ 启动失败
2014Team 2015-06-08
  • 打赏
  • 举报
回复
我先在linux服务器那边启动 ./zkServer.sh start 执行java程序 ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh stop"); linux 服务器显示停止 再 ssh.execCommand("/opt/aspire/product/comp/program/soft/zookeeper-3.4.6/bin/zkServer.sh start"); 查看linux服务器依然还是停止状态 说明,java代码启动之前我在服务器端执行 ./zkServer.sh stop了也检查了zookeeper进程确实被kill掉了, 但是java代码就是起不来
suciver 2015-06-08
  • 打赏
  • 举报
回复
如果停止能成功的话,启动不会不行啊,你最好再用ps -ef|grep zkServer找下你的zkServer进程是否还存在,要不然就用kill的方式直接干掉进程,再启动
  • 打赏
  • 举报
回复
不懂hadoop

50,329

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧