截取片段执行日志如下 :果然STAT变量确实为空,导致输出Error contacting service. It is probably not running.并且退出。
- ++ grep '^[[:space:]]*clientPort[^[:alpha:]]' /app/zookeeper-3.4.6/bin/../conf/zoo.cfg
- + clientPort=5181
- ++ grep Mode
- ++ /opt/jdk1.8.0_131/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp '/app/zookeeper-3.4.6/bin/../build/classes:/app/zookeeper-3.4.6/bin/../build/lib/*.jar:/app/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/app/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/app/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/app/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/app/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/app/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/app/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/app/zookeeper-3.4.6/bin/../conf:.:/opt/jdk1.8.0_131/lib/dt.jar:/opt/jdk1.8.0_131/lib/tools.jar' org.apache.zookeeper.client.FourLetterWordMain localhost 5181 srvr
- + STAT=
- + ‘[‘ xx = x ‘]’
- + echo ‘Error contacting service. It is probably not running.’
- Error contacting service. It is probably not running.
- + exit 1
4、修改shell脚本:分析zkServer.sh 在脚本总增加输出STAT 内容,这次我们不进行过滤。
- STAT1=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"
- -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain
- $clientPortAddress $clientPort srvr 2> test.log `
-
- echo "$STAT1"
最好的方式是copy一个新脚本,以免污染原本的脚本。我是这么做的;然后运行该脚本。
- [root@localhost bin]# ./zkServer.sh status
- ZooKeeper JMX enabled by default
- Using config: /usr/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
- Error contacting service. It is probably not running.
然后查看生成的test.log 文件:果然存在异常内容。
- in thread “main” java.lang.NumberFormatException: For input string: “2181
- at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
- at java.lang.Integer.parseInt(Integer.java:492)
- at java.lang.Integer.parseInt(Integer.java:527)
- at org.apache.zookeeper.client.FourLetterWordMain.main(FourLetterWordMain.java:76)
从日志信息来看,提示说2181这个端口号造成的。 不是一个合法的数字。
zkServer.sh里有这么一句:
- clientPort=`grep “^[[:space:]]*clientPort[^[:alpha:]]” “$ZOOCFG” | sed -e ‘s/.*=//’`
- grep “^[[:space:]]*clientPort[^[:alpha:]]” “$ZOOCFG” | sed -e ‘s/.*=//’在执行过程中,实际命令如下:
- grep ‘^[[:space:]]*clientPort[^[:alpha:]]’ /app/zookeeper-3.4.6/bin/../conf/zoo.cfg | sed -e ‘s/.*=//’
- 最终可以基本确认配置文件存在问题:
- 替换配置文件:重启 问题解决;
- 存在原因可能是编辑zoo.cfg 编码格式等等引起文件内容解析异常。
【本文是51CTO专栏机构宜信技术学院的原创文章,微信公众号“宜信技术学院( id: CE_TECH)”】
戳这里,看该作者更多好文
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|