Linux 上的 Tomcat 端口占用排查

在Linux系统上运行Tomcat时,端口占用是一个常见的问题。排查端口占用问题并采取相应措施可以确保Tomcat服务器的正常运行。本文将详细介绍如何排查和解决Tomcat端口占用问题。

一、检查端口占用情况

首先,我们需要确定Tomcat服务器使用的端口是否被其他进程占用。Tomcat默认使用的端口是8080。

1. 使用 netstat命令

netstat命令可以显示网络连接、路由表、接口统计等信息。可以使用以下命令检查端口占用情况:

复制代码
sudo netstat -tuln | grep :8080

该命令将列出所有监听8080端口的进程。

2. 使用 lsof命令

lsof命令用于列出打开的文件,可以用于检查端口占用情况:

复制代码
sudo lsof -i :8080

该命令将显示所有使用8080端口的进程信息。

3. 使用 ss命令

ss命令是一个更快速和强大的替代 netstat的工具。可以使用以下命令检查端口占用情况:

复制代码
sudo ss -tuln | grep :8080
二、查找占用端口的进程

一旦确认端口被占用,需要找到具体占用该端口的进程。

1. 使用 ps命令

假设通过 lsof或 netstat命令找到了占用端口的PID(进程ID),可以使用 ps命令查看详细信息:

复制代码
ps -p <PID> -o pid,ppid,cmd,%mem,%cpu

例如,如果PID是1234:

复制代码
ps -p 1234 -o pid,ppid,cmd,%mem,%cpu
2. 使用 top命令

top命令可以动态显示系统中各个进程的资源使用情况。输入 top后,可以按 k键,然后输入占用端口的PID以终止该进程。

三、解决端口占用问题
1. 停止占用端口的进程

可以使用 kill命令停止占用端口的进程:

复制代码
sudo kill -9 <PID>

例如,如果PID是1234:

复制代码
sudo kill -9 1234
2. 更改Tomcat端口

如果不希望停止占用端口的进程,可以修改Tomcat的配置文件以使用其他端口。

  1. 打开Tomcat的配置文件 server.xml:

    sudo vi /path/to/tomcat/conf/server.xml

  2. 找到如下部分:

  3. 修改端口号,例如改为8081:

  4. 保存并退出,然后重启Tomcat。

    sudo systemctl restart tomcat

四、自动化脚本检查和解决端口占用

可以编写一个简单的脚本来自动化检查和解决端口占用问题。

复制代码
#!/bin/bash

PORT=8080
NEW_PORT=8081

echo "Checking if port $PORT is occupied..."
if sudo lsof -i :$PORT; then
  echo "Port $PORT is occupied. Attempting to kill the process..."
  PID=$(sudo lsof -t -i :$PORT)
  sudo kill -9 $PID
  echo "Process $PID terminated. Restarting Tomcat..."
  sudo systemctl restart tomcat
else
  echo "Port $PORT is not occupied. No action required."
fi

echo "Checking if Tomcat restarted successfully on port $PORT..."
if sudo lsof -i :$PORT; then
  echo "Tomcat is running on port $PORT."
else
  echo "Port $PORT is still not available. Changing Tomcat to port $NEW_PORT..."
  sudo sed -i "s/port="$PORT"/port="$NEW_PORT"/g" /path/to/tomcat/conf/server.xml
  sudo systemctl restart tomcat
  echo "Tomcat restarted on port $NEW_PORT."
fi
​
五、总结

通过本文的介绍,详细讲解了在CentOS 8系统上排查和解决Tomcat端口占用问题的方法。从使用 netstat、lsof和 ss命令检查端口占用情况,到使用 ps和 top命令查找和停止占用端口的进程,再到修改Tomcat端口配置,最后介绍了自动化脚本的方法。

相关推荐
玖石书29 分钟前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
xiaoqiMikko37 分钟前
Linux 实战(七):useradd、sudoers、umask、SGID、软链 —— 三台真机实测
linux·centos
拂拉氏3 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Fcy6483 小时前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
Mikko73 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
书生执笔画浮沉3 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
mounter6254 小时前
Linux 内核热升级(Live Update)技术详解:PCI、VFIO 与 IOMMU 子系统的演进与实战解析引言
linux·linux kernel·kernel·iommu·vfio
砚凝霜4 小时前
【软考信息安全】第十九章 Unix/Linux安全分析与防护
linux·安全·unix
creator_Li5 小时前
Linux 的 Page Cache
linux·page cache
KING-WU5127 小时前
Linux GDB 调试实战指南:从编译到断点调试
linux·运维·服务器