pssh批量执行启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

问题描述

我这边一共4台主机,4台主机tomca路径一致。我想想通过pssh命令工具直接将4台主机的tomcat启动,命令如下:

[root@hadoop-master pssh]# pssh -P -h hosts.text /usr/local/tomcat/apache-tomcat-8.5.57/bin/startup.sh

异常如下:
异常问题

异常问题:

hadoop-master: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

问题分析

首先检查环境变量,发现我们已经配置了

[root@hadoop-master ~]# echo $JAVA_HOME
/usr/local/jdk/jdk1.8.0_261

怀疑是通过pssh方式执行命令,不能使用全局的环境变量

解决问题

如果不能设置全局环境变量,那只需要在tomcat启动的时候设置环境变量即可,我们使用一台主机hadoop-slave1做测试
首先进入tomcat的bin目录,并且编辑

[root@hadoop-slave1 bin]# cd /usr/local/tomcat/apache-tomcat-8.5.57/bin
[root@hadoop-slave1 bin]# vim catalina.sh 

在文件的第二行添加进我们的环境变量

#!/bin/sh
export JAVA_HOME="/usr/local/jdk/jdk1.8.0_261"
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.

然后wq保存退出。再执行我们的pssh命令:

[root@hadoop-master pssh]# pssh -P -h hosts.text /usr/local/tomcat/apache-tomcat-8.5.57/bin/startup.sh

执行成功
发现执行成功了,再登录hadoop-slave1中验证:

[root@hadoop-slave1 bin]# ps -ef|grep tomcat|grep -v grep
root       9820      1  0 18:13 ?        00:00:04 /usr/local/jdk/jdk1.8.0_261/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-8.5.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/apache-tomcat-8.5.57/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/apache-tomcat-8.5.57 -Dcatalina.home=/usr/local/tomcat/apache-tomcat-8.5.57 -Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-8.5.57/temp org.apache.catalina.startup.Bootstrap start

发现tomcat已经启动成功了。按照此方式,把其他服务器的tomcat也做同样的修改,就可解决问题了。
最终目标:

[root@hadoop-master pssh]# pssh -h hosts.text /usr/local/tomcat/apache-tomcat-8.5.57/bin/startup.sh
[1] 18:37:04 [SUCCESS] hadoop-slave2
[2] 18:37:04 [SUCCESS] hadoop-master
[3] 18:37:04 [SUCCESS] hadoop-slave1
[4] 18:37:04 [SUCCESS] hadoop-slave3

success

猜你喜欢

转载自blog.csdn.net/u011047968/article/details/108107236