Linux端口占用排查:ss/lsof快速定位
Linux端口占用排查:ss/lsof快速定位
2026-08-29 12:26
介绍Linux查看端口占用的常用命令与排查流程。
linux 查看端口占用
在 Linux 系统中,查看端口占用情况是排查服务异常、端口冲突、连接失败等问题时非常常见的操作。很多应用启动失败时,经常会提示类似“Address already in use”或“端口已被占用”,这时就需要快速定位是哪个进程占用了指定端口。下面介绍几种常用的 Linux 查看端口占用方法。
一、使用
ss命令查看端口占用
ss是 Linux 中推荐使用的网络状态查看工具,很多发行版中已经默认安装。查看 TCP 端口占用情况:
ss -tunlp常用参数说明:
-t:查看 TCP 连接-u:查看 UDP 连接-n:不解析域名,直接显示 IP 和端口-l:只显示监听状态的端口-p:显示占用端口的进程信息
例如,查看 8080 端口是否被占用:
ss -tunlp | grep 8080
如果端口被占用,通常会看到类似输出:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=1234,fd=10))
这表示 8080 端口被 java 进程占用,进程 ID 为 1234。
二、使用 netstat 命令查看端口占用
netstat 也是常见的网络查看命令,不过在一些新系统中可能没有默认安装。
查看监听端口:
netstat -tunlp
查看指定端口:
netstat -tunlp | grep 8080
如果命令提示 netstat: command not found,可以通过安装 net-tools 软件包来使用它。
三、使用 lsof 命令查看端口占用
lsof 可以查看当前系统中打开的文件、网络连接和进程信息,也常用于查看端口占用。
查看指定端口:
lsof -i:8080
查看 TCP 端口:
lsof -i tcp:8080
查看 UDP 端口:
lsof -i udp:53
示例输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1234 root 10u IPv6 12345 0t0 TCP *:webcache (LISTEN)
其中 PID 就是进程 ID,可以根据它进一步查看或结束进程。
四、使用 fuser 命令查看端口占用
fuser 命令可以直接查看占用某个端口的进程 ID。
查看 TCP 端口:
fuser -v 8080/tcp
查看 UDP 端口:
fuser -v 53/udp
如果需要直接结束占用端口的进程,可以使用:
fuser -k 8080/tcp
该命令会终止占用 8080 TCP 端口的进程,因此使用时需要谨慎,避免误杀重要服务。
五、根据进程 ID 查看详细信息
当已经通过 ss、netstat、lsof 或 fuser 找到进程 ID 后,可以使用 ps 命令查看进程详细信息:
ps -ef | grep 1234
或者:
ps aux | grep 1234
这样可以查看进程对应的启动命令、所属用户、资源占用情况等信息,方便判断该进程是否应该继续运行。
六、常见排查流程
遇到端口被占用时,可以按照以下流程处理:
- 使用
ss -tunlp | grep 端口号查看占用端口的进程; - 确认进程名称和进程 ID;
- 使用
ps -ef | grep PID查看进程详细信息; - 判断该进程是否为正常服务;
- 如果确认不需要该进程,可以使用
kill命令结束它。
例如:
kill 1234
如果进程无法正常结束,可以使用:
kill -9 1234
不过 kill -9 属于强制结束进程,可能导致数据丢失,应谨慎使用。
七、查看监听地址的含义
在查看端口占用时,经常能看到 0.0.0.0、127.0.0.1 或具体 IP 地址。
0.0.0.0:8080:表示监听所有网络接口,外部机器也可以访问;127.0.0.1:8080:表示只允许本机访问;192.168.1.10:8080:表示只监听指定网卡或指定 IP。
如果服务无法从外部访问,除了检查端口是否监听,还需要检查防火墙、安全组、服务配置等。
总结
Linux 查看端口占用常用命令包括 ss、netstat、lsof 和 fuser。其中 ss 更适合作为首选工具,lsof 和 fuser 在定位具体进程时非常方便。排查端口占用的核心思路是:先找到占用端口的进程 ID,再确认进程身份,最后根据业务需求选择保留、重启或终止该进程。掌握这些命令,可以快速解决端口冲突、服务启动失败和访问异常等问题。