文档首页> 互联网资讯> Linux端口占用排查:一眼锁定进程

Linux端口占用排查:一眼锁定进程

发布时间:2026-08-31 22:26       

linux查看端口占用情况

在 Linux 系统中,查看端口占用情况是服务器运维、应用排查、故障定位中非常常见的操作。比如网站无法启动、服务冲突、端口被未知进程占用、Nginx 或 Tomcat 无法监听指定端口时,都需要先确认哪个进程正在使用该端口。下面介绍几种常用且高效的方法。

一、使用 ss 命令查看端口占用

ss 是 Linux 中推荐使用的网络状态查看工具,相比老牌的 netstat,它通常更快、更轻量。

查看 TCP 端口占用情况:

ss -tulnp

参数说明:

  • -t:查看 TCP 连接
  • -u:查看 UDP 连接
  • -l:只显示监听状态的端口
  • -n:不解析域名,直接显示 IP 和端口
  • -p:显示占用端口的进程信息

例如:

ss -tulnp | grep :80

可以查看 80 端口被哪个进程占用。

如果看到类似输出:

tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))

说明 80 端口由 nginx 进程占用,进程 PID 是 1234

二、使用 netstat 命令查看端口占用

虽然 netstat 在很多新系统中逐渐被 ss 替代,但它仍然非常常用。

查看监听端口:

netstat -tulnp

查看指定端口:

netstat -tulnp | grep :3306

如果 3306 端口被 MySQL 占用,通常会看到类似信息:

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5678/mysqld

其中 5678 是进程 PID,mysqld 是进程名称。

三、使用 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     2048 root   23u  IPv6 12345      0t0  TCP *:8080 (LISTEN)

说明 8080 端口被 java 进程占用,PID 是 2048

四、使用 fuser 命令查看端口占用

fuser 可以快速查看某个端口对应的进程。

查看 TCP 端口:

fuser -n tcp 8080

查看 UDP 端口:

fuser -n udp 53

如果想显示更详细信息:

fuser -v -n tcp 8080

输出中会显示用户、PID、访问类型等信息。

五、查看端口占用并结束进程

如果确认某个端口被不需要的进程占用,可以根据 PID 结束该进程。

例如使用 lsof 查到 PID 为 2048

kill 2048

如果进程无法正常结束,可以强制结束:

kill -9 2048

也可以通过命令组合直接结束占用端口的进程:

fuser -k 8080/tcp

注意:结束进程前一定要确认该进程是否重要,避免误杀数据库、Web 服务或系统关键服务。

六、查看监听地址的含义

查看端口占用时,经常会看到以下几种地址:

0.0.0.0:80

表示监听本机所有 IPv4 地址的 80 端口,外部网络可能可以访问。

127.0.0.1:3306

表示只监听本地回环地址,通常只允许本机访问。

[::]:443

表示监听 IPv6 地址的 443 端口,有些服务也会同时兼容 IPv4。

理解监听地址有助于判断服务是否暴露在外网,以及是否存在安全风险。

七、常见问题排查思路

当服务无法启动时,可以按照以下顺序排查:

  1. 查看指定端口是否被占用:
ss -tulnp | grep :端口号
  1. 查看占用进程的 PID 和名称:
lsof -i :端口号
  1. 确认进程是否属于当前服务:
ps -ef | grep PID
  1. 如果确认是冲突进程,可以停止或重启相关服务。

例如停止 Nginx:

systemctl stop nginx

停止 Apache:

systemctl stop httpd

八、常用命令汇总

目的 命令
查看所有监听端口 ss -tulnp
查看 TCP 端口 ss -tnlp
查看 UDP 端口 ss -unlp
查看指定端口 ss -tulnp \| grep :8080
使用 netstat 查看 netstat -tulnp
使用 lsof 查看 lsof -i :8080
使用 fuser 查看 fuser -n tcp 8080
结束占用端口的进程 fuser -k 8080/tcp

总结

Linux 查看端口占用情况常用 ssnetstatlsoffuser 等命令。其中 ss -tulnp 适合快速查看监听端口和对应进程,lsof -i :端口号 适合精确定位某个端口,fuser 则适合快速查看或结束占用端口的进程。掌握这些方法后,可以高效处理端口冲突、服务无法启动、网络连接异常等常见问题。