Linux: 已占用接口
- 1. netstat(适用于旧系统)
- 1.1 书中对该命令的介绍
- 2. ss(适用于新系统,替代 netstat)
- 3. lsof(查看详细进程信息)
- 4. fuser(快速查找占用端口的进程)
- 5. 只查找某个端口是否被占用
1. netstat(适用于旧系统)
netstat -tulnp
参数说明:
- -t:显示 TCP 端口
- -u:显示 UDP 端口
- -l:仅显示 监听中的端口
- -n:不解析域名,直接显示 IP 和端口号
- -p:显示 占用端口的进程 ID 和名称
🌰
[root@hecs-230192 ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1164/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 792/master
tcp6 0 0 :::2181 :::* LISTEN 1410/java
tcp6 0 0 :::2888 :::* LISTEN 1410/java
tcp6 0 0 :::3888 :::* LISTEN 1410/java
tcp6 0 0 :::8080 :::* LISTEN 1410/java
tcp6 0 0 :::42576 :::* LISTEN 1410/java
tcp6 0 0 :::22 :::* LISTEN 1164/sshd
tcp6 0 0 ::1:25 :::* LISTEN 792/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 549/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 497/chronyd
udp6 0 0 ::1:323 :::* 497/chronyd
🌰
🌰
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 5678/mysqld
✅ 这里可以看到:
- 80 端口被 Nginx (PID: 1234) 占用
- 3306 端口被 MySQL (PID: 5678) 占用
1.1 书中对该命令的介绍
2. ss(适用于新系统,替代 netstat)
ss -tulnp
🔹 ss 比 netstat 更快,占用更少资源,适用于现代 Linux 发行版(如 CentOS 7+、Ubuntu 20+)。
3. lsof(查看详细进程信息)
lsof -i :8080
🔹 -i :8080:查找 8080 端口 是否被占用。
📌 示例输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 3456 root 6u IPv6 123456 0t0 TCP *:8080 (LISTEN)
✅ 说明 8080 端口 被 PID 3456 的 Java 进程 占用。
4. fuser(快速查找占用端口的进程)
fuser -v 8080/tcp
[root@hcss-ecs-2ff4 ~]# fuser -v 8080/tcp
USER PID ACCESS COMMAND
8080/tcp: root 1553 F.... java
✅ 说明 进程 1553 占用了 8080 端口。
5. 只查找某个端口是否被占用
netstat -anp | grep :8080
[root@hcss-ecs-2ff4 ~]# netstat -anp | grep :8080
tcp6 0 0 :::8080 :::* LISTEN 1553/java
或者:
ss -anp | grep :8080
[root@hcss-ecs-2ff4 ~]# ss -anp | grep :8080
tcp LISTEN 0 50 [::]:8080 [::]:* users:(("java",pid=1553,fd=58))