在 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
发表回复