上一篇                     
               
			  Linux系统端口占用怎么查
- Linux
- 2025-06-11
- 3329
 在 Linux 中查看端口占用:,1. **
 
 
netstat -tulpn | grep **:查看监听端口及对应进程。,2. **
 ss -tulpn | grep **:更快速替代 netstat。,3. **
 lsof -i :**:查找占用指定端口的进程。
方法1:使用 netstat 命令(经典工具)
 
netstat 是网络统计工具,可查看所有网络连接和监听端口。
操作步骤: 
netstat -tuln | grep <端口号>
- 参数解析
 -t:TCP端口
 -u:UDP端口
 -l:仅显示监听中的端口
 -n:以数字形式显示(不解析域名)
 -p:显示进程信息(需sudo权限)
示例:
$ netstat -tulnp | grep :22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
输出解读:
端口 22 被进程 sshd(PID 1234)占用,协议为TCP。
方法2:使用 ss 命令(netstat 的替代品)
 
ss(Socket Statistics)更快速高效,语法与 netstat 类似。
操作步骤: 

ss -tuln | grep <端口号>
示例:
$ ss -tuln sport = :80 tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
输出解读:
端口 80 处于监听状态(未显示进程时需结合 -p 参数)。
方法3:使用 lsof 命令(查看文件与进程关联)
 
lsof(List Open Files)可精确查看占用端口的进程。
操作步骤: 

sudo lsof -i :<端口号>
示例:
$ sudo lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 5678 mysql 33u IPv6 123456 0t0 TCP *:mysql (LISTEN)
输出解读:
端口 3306 被 mysqld 进程(PID 5678)占用。
方法4:使用 /proc 文件系统(底层排查)
 
Linux 通过 /proc 目录暴露进程信息,可直接读取网络状态。
操作步骤: 
grep -l <端口号> /proc/net/tcp* # 查找TCP端口 cat /proc/<PID>/net/tcp # 根据PID检查
适用场景:
当系统未安装 netstat/ss 时使用(如精简版Docker容器)。

端口占用后的处理建议
- 终止占用进程: sudo kill <PID> # 正常终止 sudo kill -9 <PID> # 强制终止(慎用) 
- 修改服务配置:
 若需保留原进程,修改应用配置文件更换端口(如Nginx的listen指令)。
- 预防冲突: 
  - 使用 systemctl status <服务名>检查服务状态。
- 通过 crontab设置定期端口检查脚本。
 
- 使用 
方法对比与选择指南
| 方法 | 优势 | 适用场景 | 
|---|---|---|
| netstat | 兼容性广(旧系统支持) | 基础检查 | 
| ss | 执行速度快,输出简洁 | 高效批量检查 | 
| lsof | 进程信息详细,支持过滤 | 精准定位占用源 | 
| /proc | 不依赖外部工具 | 极简环境故障排查 | 
安全提示:
- 操作需
sudo权限的命令时,确保理解其风险。- 生产环境中,终止进程前请确认其作用(如
sshd占用22端口属正常现象)。
引用说明: 参考 Linux 官方文档(man7.org)及以下工具手册:
- netstat(8),- ss(8),- lsof(8)的 man page 文档。
- Linux 内核文档 /proc/net/部分(kernel.org)。
- 操作实践基于 Ubuntu 22.04/CentOS 7 测试验证。
 
  
			 
			 
			 
			 
			 
			