本文首发于公众号:布道谷。
在 Linux 上查看进程占用的端口号,可以使用以下几种方法:
1. 使用 netstat 查看端口占用
netstat -tulnp | grep <端口号或进程名>
-t:显示 TCP 端口-u:显示 UDP 端口-l:仅显示 监听端口-n:不解析主机名,加快查询速度-p:显示 进程名称
示例:
查看 所有正在监听的端口
netstat -tulnp
查看 特定端口(例如 8080):
netstat -tulnp | grep 8080
输出示例:
tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* 12345/java
其中:
- 8080 是端口号
- 12345 是进程 ID(PID)
- java 是占用端口的程序
2. 使用 ss(比 netstat 更快)
如果你的 Linux 发行版较新,推荐使用 ss(比 netstat 更快):
ss -tulnp | grep <端口号或进程名>
示例:
ss -tulnp | grep 8080
3. 使用 lsof 查看端口对应的进程
lsof -i :<端口号>
示例:
lsof -i :8080
输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 12345 root 10u IPv6 12345 0t0 TCP *:8080 (LISTEN)
- 12345 是进程 ID(PID)
- java 是进程名称
如果 lsof 命令不存在,安装:
sudo apt install lsof # Ubuntu/Debiansudo yum install lsof # CentOS
4. 使用 pidof + netstat 查询特定进程的端口
如果你知道进程名称(如 java),可以用:
pidof java
然后:
netstat -tulnp | grep $(pidof java)
5. 使用 ps + grep 查找进程
如果你知道进程名(例如 java):
ps -ef | grep java
然后结合 netstat 或 ss 查询端口。
6. 直接查看某个进程的所有监听端口
如果你知道进程 PID(例如 12345),可以用:
netstat -tulnp | grep 12345
或者:
ls /proc/12345/fd | xargs -I {} ls -l /proc/12345/fd/{} | grep socket
7. 统计某个进程占用的端口数
bash
lsof -i | grep java | wc -l
这会统计 java 进程占用了多少端口。
8. 释放被占用的端口
如果某个端口被占用,可以杀掉进程:
kill -9 <PID>
示例:
kill -9 12345
总结
| 操作 | 命令 |
|---|---|
| 查看所有监听端口 | netstat -tulnp |
| 查看特定端口的进程 | `netstat -tulnp |
| 查看进程占用的端口 | lsof -i :8080 |
| 查看进程 PID | pidof java |
| 查看某进程监听的所有端口 | `ls /proc//fd |
| 杀掉占用端口的进程 | kill -9 <PID> |
🚀 推荐最简单的方法
netstat -tulnp | grep 8080
或者:
lsof -i :8080
这样可以快速找到进程 占用的端口号 🔥