很多人在Linux服务器上部署Java应用时,Tomcat是绕不开的中间件。碰到问题需要排查版本信息,或者做版本升级前的确认linux运维面试题,第一反应就是找命令。但Tomcat不像某些软件那样有个统一的“--version”参数,查起来得绕几步。下面我把最常用的几种方法整理出来,都是实际干活时用得上的。
直接运行version脚本
Tomcat安装包里自带一个version脚本,路径就在它的bin目录下。这个方法最快,前提是你知道Tomcat装在哪里。
先切到Tomcat的bin目录,比如安装路径是/usr/local/tomcat,那就执行:
cd /usr/local/tomcat/bin
./version.sh
终端会直接打印出Tomcat版本号、JVM版本、架构信息这些。如果你用catalina.sh启动过Tomcat,也可以用catalina.sh version,效果一样。有些系统上catalina.sh权限不够,记得先chmod加执行权限。
这个脚本的输出特别干净,一眼就能看到类似“Server version: Apache Tomcat/9.0.76”这样的行,版本号就在那里。生产环境里我一般先用这招,省事。
查看catalina.jar里的清单文件
如果Tomcat已经跑起来了,但你不确定bin目录有没有权限进去,或者脚本被误删了,那就换个思路。Tomcat的核心jar包里藏着版本信息。
找到Tomcat的lib目录,里面有个catalina.jar。用unzip或者jar命令直接读取MANIFEST.MF文件就行:
unzip -p /usr/local/tomcat/lib/catalina.jar META-INF/MANIFEST.MF | grep Implementation-Version
或者更直观一点:
java -cp /usr/local/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo

后面这条命令会调用Tomcat自己的ServerInfo类,输出的信息比单纯看版本号还多,包括构建时间、服务器编号。我遇到过几次脚本损坏的情况,全靠这个命令救场。
查看启动日志或web界面
有些时候你既没有脚本权限,也找不到jar包路径,比如别人部署的Tomcat,你只有访问应用的权利。那就可以从日志或者管理页面入手。
Tomcat启动时,在catalina.out日志文件里会打印版本信息。执行:
grep -i "Server version" /usr/local/tomcat/logs/catalina.out
只要日志没被清空过,版本号肯定在里面。如果日志轮转过,就翻以前的归档文件。
另外,如果Tomcat开启了Manager App,你可以在浏览器里访问http://你的IP:端口/manager/html长春linux培训,登录后首页就显示版本号。但生产环境一般禁用这个,所以日志更靠谱。
通过进程信息间接判断
如果你连Tomcat安装路径都不知道linux查看tomcat版本命令,但知道它跑在哪个进程上,也有办法。用ps命令找到Java进程ID,然后查它的启动参数:
ps -ef | grep tomcat
看到进程ID后,再执行:
ls -l /proc/进程ID/cwd

这会显示进程的工作目录,通常是Tomcat的根目录。然后回到前面两种方法继续查。或者直接看进程启动参数里的-Dcatalina.home,也能定位安装路径。
这招适合接手别人维护的服务器,目录结构乱七八糟的时候特别好用。我曾在十几台服务器上排查版本不一致的问题,全靠ps命令一个个定位。
检查解压后的目录结构
还有一种情况linux查看tomcat版本命令,你拿到的Tomcat是绿色解压版,没有rpm安装的记录。这时候直接看解压目录下的RELEASE-NOTES文件,里面会写版本号:
head -5 /usr/local/tomcat/RELEASE-NOTES

或者看lib目录下的catalina.jar文件名,有时候文件名里就带了版本号,比如catalina-9.0.76.jar。不过这种方式不太严谨,有人重命名过就看不出来了。
这些方法覆盖了从正常到极端情况的场景。平时最推荐先用version.sh,不行就用catalina.jar里的信息,再不行就看日志。学会这几招,不管是自查还是帮同事排查,都能快速拿到结果。
