| 
                         截取片段执行日志如下 :果然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)”】 
戳这里,看该作者更多好文 
                         (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |