上一篇
Linux如何查端口占用情况?
- Linux
- 2025-06-07
- 3990
在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 Filesnetstat(8)
– net-tools 手册nmap(1)
– 网络探测工具官方指南