CentOS7彻底卸载Tomcat9并清理残留:一步不漏的实操笔记

CentOS7彻底卸载Tomcat9并清理残留

装过Tomcat9的CentOS7机器,一旦决定不用,就别让它留下半点影子。残留文件、自启脚本、环境变量、systemd配置,哪怕只漏一处,下次再装别的版本就会踩坑。下面这套流程,我亲自在多台生产机验证过,照着敲,保证干干净净。
先搞清楚自己到底装了啥
很多人一上来就yum remove,结果只删掉一半。先执行rpm -qa | grep tomcat,如果返回空,再执行find / -iname 'tomcat' 2>/dev/null | head,看看是二进制包、源码包还是别人编译的tar.gz。三种装法,三种删法,别混。
二进制rpm包卸载
如果之前用yum装过,直接yum remove tomcat*会把主程序带走,但/var/lib/tomcat和/etc/tomcat这两个目录还会赖着。手动再执行:
rm -rf /var/lib/tomcat /etc/tomcat /usr/share/tomcat

接着rpm -e --nodeps tomcat*,确保rpm数据库里不再挂名。
源码tar.gz包卸载
当时解压到/opt/下,目录名叫apache-tomcat-9.0.xx,别只删目录。先停服务:
/opt/apache-tomcat-9.0.xx/bin/shutdown.sh
再删目录:
rm -rf /opt/apache-tomcat-9.0.xx
如果以前建过软链,ls -l /usr/local/tomcat看看指向哪,一并删。
systemd自启脚本清理
Tomcat9常被做成tomcat.service,路径在/etc/systemd/system/tomcat.service。先停服务:
systemctl stop tomcat
禁用开机启动:
systemctl disable tomcat
再删文件:
rm -f /etc/systemd/system/tomcat.service
重载daemon:
systemctl daemon-reload
环境变量别漏
打开/etc/profile、/etc/bashrc、~/.bashrc,把下面几行全注释或删掉:
CATALINA_HOME=/opt/apache-tomcat-9.0.xx
export CATALINA_HOME
改完执行source /etc/profile让当前会话生效。
用户和组顺手清
如果当初单独建了tomcat用户,执行:
userdel -r tomcat
加-r才能把家目录一起端掉,避免/home/tomcat留下日志或war包。
日志与缓存扫尾
Tomcat爱在三个地方写日志:/var/log/tomcat、/opt/apache-tomcat-9.0.xx/logs、/tmp。统一执行:
rm -rf /var/log/tomcat /opt/apache-tomcat-9.0.xx/logs /tmp/tomcat.*
systemd的journal也可能有记录,再执行:
journalctl --vacuum-time=1s --unit=tomcat
端口占用复查
默认8080、8005、8009,执行:
ss -tulnp | grep -E '8080|8005|8009'
如果还有进程,ps -ef | grep java找到PID,kill -9 PID强杀。
开机自启彩蛋
有人把tomcat写进/etc/rc.local,别忘了检查:
grep -i tomcat /etc/rc.local
有就注释掉,再执行chmod +x /etc/rc.d/rc.local确保文件可执行。
一键复查脚本
把下面内容保存成checktomcatleftover.sh:
#!/bin/bash
for dir in /etc/tomcat /var/lib/tomcat /usr/share/tomcat /opt/apache-tomcat* /usr/local/tomcat /home/tomcat /var/log/tomcat; do
[ -e "$dir" ] && echo "残留: $dir"
done
for port in 8080 8005 8009; do
ss -tulnp | grep -q ":$port " && echo "端口仍被占用: $port"
done
systemctl list-unit-files | grep -q tomcat && echo "systemd单元未清理"
grep -s CATALINA_HOME /etc/profile /etc/bashrc ~/.bashrc && echo "环境变量未清理"
跑完没输出,才算真正卸干净。
常见翻车点提醒
1. 只删目录不删用户,导致/home/tomcat里还有war包,重装时报端口冲突。
2. systemd单元文件没禁用,重启后java进程又冒出来,以为见鬼。
3. 环境变量留在/etc/profile.d/自定义脚本里,source后又把旧路径带回来。
4. 日志目录被logrotate管理,删了文件不删配置,/var/log/messages疯狂报错。
重装前的最后确认
执行which java,确认JDK还在;再执行java -version,版本正确就能直接上新版本Tomcat,不会和旧配置搅在一起。至此,CentOS7里再也找不到Tomcat9的任何痕迹,系统日志干净,端口空闲,磁盘空间也回来了。
