上一篇                     
               
			  Linux如何查端口占用情况?
- Linux
- 2025-06-07
- 4989
 在Linux中查看端口占用情况,常用命令:,1. 
 
 
netstat -tuln | grep  ,2. 
 lsof -i : ,3. 
 ss -tuln | grep  ,若返回结果则被占用,无输出表示空闲。
在 Linux 系统中,查看端口占用情况是网络管理和故障排查的关键操作,以下是 6 种专业方法及其详细操作指南,适用于所有主流的 Linux 发行版(Ubuntu、CentOS、Debian 等):
 方法一:使用 netstat 命令(经典工具)
 
sudo netstat -tuln | grep ":端口号"
- 参数解析
 -t(TCP)-u(UDP)-l(仅监听端口)-n(显示数字端口)
- 示例:检查 80 端口 sudo netstat -tuln | grep ":80" 
- 输出解读 tcp6 0 0 :::80 :::* LISTEN 1234/nginx 表示 80 端口被 Nginx 进程(PID 1234)占用。  
️ 注意:部分新系统需安装
net-tools:sudo apt install net-tools(Debian/Ubuntu)或sudo yum install net-tools(CentOS/RHEL)
 方法二:使用 ss 命令(推荐,更高效)
 
sudo ss -tuln | grep ":端口号"
- 优势:比 netstat更快,直接读取内核数据
- 示例:检查 3306 端口 sudo ss -tuln | grep ":3306" 
- 输出关键列:
 Local Address:Port→ 本地监听地址
 Process→ 进程名/PID(需加-p参数)
️ 方法三:使用 lsof 命令(查看进程详情)
 
sudo lsof -i :端口号
- 直接定位进程:显示占用端口的程序路径、用户、PID
- 示例:检查 22 端口(SSH) sudo lsof -i :22 
- 典型输出: sshd 1234 root 3u IPv4 23456 0t0 TCP *:22 (LISTEN) → 进程名: sshd,PID:1234,用户:root 
 方法四:使用 nmap 扫描本地端口
 
sudo nmap -sT -p 端口号 localhost
- 适用场景:验证端口开放状态(即使无监听进程)
- 安装命令: sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL 
- 示例:扫描 8080 端口 sudo nmap -sT -p 8080 localhost 
- 结果解读:
 open→ 端口被占用
 closed→ 端口未被占用
 方法五:使用 telnet 或 nc 测试连通性
 
telnet localhost 端口号 # 或 nc -zv localhost 端口号
- 间接判断逻辑:
 连接成功 → 端口被占用(或有服务响应)
 连接拒绝 → 端口未被占用
- 示例:测试 6379(Redis) nc -zv 127.0.0.1 6379 Connection to 127.0.0.1 6379 port [tcp/*] succeeded! # 端口占用 
 方法六:查看 /proc/net 系统文件
 
grep -r ":端口号" /proc/net/tcp /proc/net/udp
- 底层原理:直接读取内核网络堆栈信息
- 端口转换:
 需将十进制端口转为十六进制(如 80 →0050)
- 示例:查找十六进制端口 1F90(8080)grep -r ":1F90" /proc/net/tcp 
最佳实践总结
| 场景 | 推荐命令 | 优势 | 
|---|---|---|
| 快速检查端口占用 | ss -tuln | 速度快,无需安装 | 
| 需查看进程详细信息 | lsof -i :端口号 | 显示进程路径、用户、PID | 
| 确认端口开放状态 | nmap localhost | 精确识别过滤状态 | 
| 兼容旧系统 | netstat -tuln | 广泛支持 | 
操作注意:
- 普通用户可能无权限查看系统进程,请使用
sudo- 检查 UDP 端口需显式指定
-u参数(如ss -uln)- 云服务器需同步检查安全组/防火墙规则
️ 端口占用冲突解决方案
若发现端口被占用,可通过以下步骤释放:
- 终止进程: sudo kill -9 PID # 强制终止(根据 lsof/ss 获取的 PID) 
- 更改服务配置:
 修改对应服务的配置文件(如 Nginx 的/etc/nginx/nginx.conf中listen指令)
- 检查僵尸进程: ps aux | grep defunct # 清理僵尸进程释放资源 
引用说明: 基于 Linux 内核文档(kernel.org)及以下工具手册:

- ss(8)– iproute2 工具集
- lsof(8)– LiSt Open Files
- netstat(8)– net-tools 手册
- nmap(1)– 网络探测工具官方指南
 
  
			 
			