当前位置:首页 > 问答 > 正文

端口监控 网络排查 CentOS系统下查询端口占用状态的方法

🔍 CentOS系统下查询端口占用状态的方法(2025最新版)

📢 最新消息
根据2025年8月3日CSDN博客报道,CentOS 8已正式结束生命周期(EOL),但通过CloudLinux的TuxCare服务可续命至2025年底!建议尽快迁移至Rocky Linux/AlmaLinux或使用RHEL免费许可,生产环境优先选择稳定版,开发环境可尝试CentOS Stream。

🚀 为什么需要查询端口占用?

作为运维老司机,你一定遇到过这些场景:

  • 😤 应用启动报错“Address already in use”
  • 🕵️ 怀疑服务器被植入恶意进程
  • 🔧 需要优化网络连接池配置

别慌!本文手把手教你用3个神器快速定位问题,还附赠emoji表情包哦~

🔧 方法一:ss命令(推荐!)

🌟 为什么选ss?

  • 🚀 比netstat快10倍以上!
  • 📊 显示更详细的TCP状态(如TIME_WAIT数量)
  • 💻 CentOS 7/8默认安装,无需额外操作

📝 常用命令

# 查看所有TCP连接(简洁模式)  
🔍 ss -at  
# 查找占用80端口的进程  
🎯 ss -tulnp | grep ':80'  
# 统计各状态连接数  
📊 ss -s | grep 'TCP:'  
# 按状态过滤(如查看ESTABLISHED连接)  
🔥 ss -t state established  

💡 案例实操

[root@localhost ~]# ss -tulnp | grep ':80'  
tcp  LISTEN 0 128 *:80  *:*  users:(("nginx",pid=1234,fd=3))  

👆 看到没?PID=1234的nginx进程占用了80端口!

🔍 方法二:lsof命令

💻 安装命令

📦 yum install lsof -y  

📝 常用命令

# 查看所有网络连接  
🌐 lsof -i  
# 查找占用3306端口的进程  
🔍 lsof -i :3306  
# 查看某个用户的所有打开文件  
👤 lsof -u root  
# 递归查看目录下被打开的文件  
📂 lsof +D /var/www/html  

💡 案例实操

[root@localhost ~]# lsof -i :22  
COMMAND PID USER  FD   TYPE DEVICE SIZE/OFF NODE NAME  
sshd    1033 root  3u  IPv4 28485 0t0  TCP *:ssh (LISTEN)  

👆 显示sshd服务占用了22端口,PID是1033

🛠️ 方法三:netstat(传统方案)

⚠️ 注意事项

虽然netstat已逐渐被ss取代,但在某些旧系统(如CentOS 6)中仍需使用。

📝 常用命令

# 查看所有TCP连接  
📜 netstat -ant  
# 查找占用443端口的进程  
🔒 netstat -tulnp | grep ':443'  
# 统计各状态连接数  
📈 netstat -ant | awk '{print $6}' | sort | uniq -c  

💡 案例实操

[root@localhost ~]# netstat -tulnp | grep ':443'  
tcp6  0 0 :::443  :::*  LISTEN  2456/nginx  

👆 显示nginx的PID=2456占用了443端口

端口监控 网络排查 CentOS系统下查询端口占用状态的方法

端口监控 网络排查 CentOS系统下查询端口占用状态的方法

💥 终极技巧:结束占用进程

找到PID后,可以用kill命令终结它:

🔨 kill -9 1234  # 强制结束PID=1234的进程  

📊 三种方法对比表

方法 速度 详细度 适用场景
ss 高并发服务器、精准过滤
lsof 诊断设备忙碌、递归查询
netstat 旧系统兼容、路由表查看

1️⃣ 优先使用ss命令,效率最高!
2️⃣ 需要查看文件描述符时选lsof
3️⃣ 旧系统(CentOS 6)保留netstat

💬 遇到问题?评论区留言,老司机在线答疑!别忘了点赞收藏哦~ 🚀

端口监控 网络排查 CentOS系统下查询端口占用状态的方法

发表评论