在 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 查看端口占用(推荐)
ss 是 netstat 的现代替代工具,更快且信息更丰富。
查看所有 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 | 快速定位并可杀掉占用端口进程 |
建议:
- 开发调试:
lsof -i :端口或ss -tlnp - 运维排查:
netstat -tulnp - 清理占用端口:
fuser -k 端口/tcp或kill -9 PID
发表回复