错误原文:
cat: ./: Is a directory Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.41 Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.41 Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.41/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/local/apache-tomcat-8.5.41/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.41/bin/tomcat-juli.jar Using CATALINA_PID: ./ $CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted.
说CATALINA_PID
变量设置了但是不存在,这个问题也是老问题,之前遇到并解决过,但是没有记录,这里做下记录。
解决方法:
1 在tomcat的bin目录下创建CATALINA_PID
文件,随意添加一个PID(这个PID下次重启tomcat时会被重写)
cd /usr/local/apache-tomcat-8.5.41/bin
vim CATALINA_PID
输入3210(随意数字,代表PID),然后wd
保存退出
2 编辑 catalina.sh
文件,添加配置CATALINA_PID路径 如图
由于我使用的是openjdk8 没手动配置JAVA_HOME,所以要在这里指定一下JAVA_HOME,catalina.sh文件内很多都用到了这个配置,需要配置上。
3 编辑 catalina.sh
文件 添加重写CATALINA_PID文件的配置
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/$CATALINA_PID
cat $CATALINA_PID
fi
然后重启服务器 或者 kill掉已启动的tomcat进程,再次使用shutdown.sh
或者catalina.sh stop
停止tomcat,成功停止。
另外在配置自动启停脚本的时候还遇到一个错误:
java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:504) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:498)
解决方法:
在 catalina.sh
文件里添加下面配置(其中一些参数根据自身情况配置)再重启服务即可:
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -server -Xms800M -Xmx800M -XX:NewRatio=1 -XX:SurvivorRatio=4 -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=256M -XX:+UseCompressedClassPointers -XX:CompressedClassSpaceSize=128M -XX:ReservedCodeCacheSize=128M -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics -XX:HeapDumpPath=$CATALINA_BASE/dump/dump.dump -Djava.awt.headless=true"