0%

查看端口占用

Linux 查看端口占用的两种常用方法:lsof 与 netstat

在 Linux 系统中,查看端口占用情况是排查网络服务故障(如 “端口已被占用” 错误)的基础操作。常用工具包括 lsof(列出打开的文件)和 netstat(网络状态统计),本文将详细介绍两者的用法及场景。

使用 lsof 查看端口占用

lsof(List Open Files)是一款功能强大的工具,可列出系统中所有打开的文件(Linux 中 “一切皆文件”,包括网络连接)。其核心优势是能直接关联端口与进程的详细信息。

查看指定端口的占用情况

命令格式

1
lsof -i :端口号

示例:查看 8010 端口的占用情况

1
lsof -i:8010

输出解析

1
2
3
COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nginx 35653 zhanghe 10u IPv4 0xcac2e413ddf9c5b9 0t0 TCP *:8010 (LISTEN)
nginx 35654 zhanghe 10u IPv4 0xcac2e413ddf9c5b9 0t0 TCP *:8010 (LISTEN)
  • COMMAND:占用端口的进程名(如 nginx);
  • PID:进程 ID(如 35653,可用于终止进程);
  • USER:进程所属用户;
  • TYPE:网络类型(如 IPv4);
  • NAME:端口状态(如 LISTEN 表示正在监听)。

扩展用法:通过进程 ID 查看打开的文件

lsof 还可反向查询某个进程打开的所有文件 / 端口

1
lsof -p 进程ID

示例:查看 PID 为 35653 的进程打开的文件

1
lsof -p 35653

输出将包含该进程打开的日志文件、网络连接(端口)、设备文件等,适合分析进程的资源占用。

使用 netstat 查看端口占用

netstat(Network Statistics)是传统的网络状态工具,专注于显示网络连接、路由表、接口统计等信息,查看端口占用时更简洁。

查看指定端口的占用情况

命令格式

1
netstat -tunlp | grep 端口号

参数说明

  • -t:显示 TCP 协议的连接;
  • -u:显示 UDP 协议的连接;
  • -n:直接显示 IP 地址和端口号(不解析域名和服务名,速度更快);
  • -l:仅显示处于监听状态(LISTEN)的连接;
  • -p:显示占用端口的进程 ID(PID)和程序名。

示例:查看 8096 端口的占用情况

1
netstat -tunlp | grep 8096

输出解析

1
tcp6       0      0 :::8096                 :::*                    LISTEN      22027/java 
  • tcp6:表示使用 TCP 协议,支持 IPv6;
  • :::8096:本地监听的端口(:: 表示所有 IPv6 地址);
  • LISTEN:状态为监听;
  • 22027/java:进程 ID 为 22027,进程名为 java

扩展用法:查看所有监听端口

若需列出系统中所有正在监听的端口(不指定具体端口),可省略 grep

1
netstat -tunlp

适合快速了解系统中所有活跃的网络服务(如 SSH、Nginx、MySQL 等)。

两种工具的对比与选择

工具 优势 劣势 适用场景
lsof 信息更详细(含用户、文件描述符等);支持反向查询进程打开的文件 输出内容较多,需筛选;部分系统默认未安装 需要详细进程信息或分析资源占用时
netstat 轻量简洁,专注网络连接;参数组合灵活 不支持查看进程打开的非网络文件 快速排查端口占用或监听状态时

实战:终止占用端口的进程

查找到占用端口的进程后,若需释放端口,可通过 kill 命令终止进程:

1
2
# 终止 PID 为 22027 的进程(示例)
kill -9 22027
  • -9 表示强制终止(确保进程立即退出)

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10