在 Linux 系统中查看端口占用情况有多种方法,可以用来排查端口冲突或查看服务状态。下面总结几种常用方法,并附上示例命令。


1. 使用 netstat 查看端口占用

netstat 是经典的网络状态查看工具,可以显示监听端口和对应进程信息。

查看所有监听端口

netstat -tuln

参数说明:

  • -t:显示 TCP 端口
  • -u:显示 UDP 端口
  • -l:显示监听状态的端口
  • -n:显示数字形式的地址和端口

查看指定端口占用

netstat -tulnp | grep 8080

参数说明:

  • -p:显示占用端口的进程 PID 和名称

示例输出

tcp        0      0 0.0.0.0:8080           0.0.0.0:*              LISTEN      1234/java

  • LISTEN:表示端口正在监听
  • 1234/java:表示 PID=1234 的 Java 进程占用该端口

2. 使用 lsof 查看端口占用

lsof 用于列出系统打开的文件和网络连接。

查看指定端口

lsof -i :8080

示例输出:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java      1234 root   45u  IPv6  0t0    TCP *:8080 (LISTEN)

  • COMMAND:占用端口的程序
  • PID:进程 ID
  • NAME:端口信息

查看所有监听端口

lsof -i -P -n | grep LISTEN

参数说明:

  • -P:显示端口号而不是服务名
  • -n:显示 IP 地址而不是域名

3. 使用 ss 查看端口占用(推荐)

ssnetstat 的现代替代工具,更快且信息更丰富。

查看所有 TCP 监听端口

ss -tln

查看指定端口

ss -tlnp | grep 8080

示例输出:

LISTEN 0      50          *:8080       *:*     users:(("java",pid=1234,fd=45))


4. 使用 fuser 查看端口占用

fuser 可以直接显示使用指定端口的进程 ID。

查看端口占用

fuser 8080/tcp

输出示例:

8080/tcp: 1234

杀掉占用端口的进程

fuser -k 8080/tcp

注意:慎用此命令,可能会杀掉重要进程。


5. 总结与建议

命令功能特点使用场景
netstat查看网络状态和端口占用系统自带,兼容性好
lsof查看进程打开的端口和文件精确查看指定端口占用进程
ss快速查看端口状态查看监听端口及进程信息,推荐使用
fuser查看端口对应 PID快速定位并可杀掉占用端口进程

建议

  1. 开发调试lsof -i :端口ss -tlnp
  2. 运维排查netstat -tulnp
  3. 清理占用端口fuser -k 端口/tcpkill -9 PID