Bootstrap

【网络 MAC 学习专栏 -- linux 环境下 网路port端口使用情况查看】

Overview

在 Linux 环境中,可以使用以下方法来查看当前被占用的端口:

1. 使用 netstat(旧方法,但仍可用)

netstat -tulnp

参数解析:

  • -t 显示 TCP 端口

  • -u 显示 UDP 端口

  • -l 显示监听的端口

  • -n 以数字形式显示地址和端口

  • -p 显示进程 ID 和名称

示例输出:

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  1023/sshd
tcp6       0      0 :::80           :::*              LISTEN  2005/nginx

2. 使用 ss(更快,推荐)

ss -tulnp

ssnetstat 的替代工具,功能类似,但性能更好。

示例输出:

Netid   State   Local Address:Port   Peer Address:Port   Process
tcp     LISTEN  0.0.0.0:22           0.0.0.0:*           users:(("sshd",pid=1023,fd=3))
tcp     LISTEN  :::80                :::*                users:(("nginx",pid=2005,fd=5))

3. 只列出被占用的端口

netstat -tulnp | awk '{print $4}' | awk -F ":" '{print $NF}' | sort -n | uniq

或者:

ss -tulnp | awk '{print $5}' | awk -F ":" '{print $NF}' | sort -n | uniq

4. 使用 lsof 查找特定端口

lsof -i :80

示例输出:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx     2005 root   5u   IPv4  34567      0t0  TCP *:http (LISTEN)

5. 使用 fuser 查看某个端口被哪个进程占用

fuser -n tcp 80

输出示例:

80/tcp:  2005

(进程 ID 2005 占用了 TCP 端口 80)

6. 显示所有被占用的端口

sudo lsof -i -P -n
  • -i:显示网络相关的文件(端口)

  • -P:不解析端口名称(只显示端口号)

  • -n:不解析域名(只显示 IP)

总结

方法命令说明
netstatnetstat -tulnp旧版工具,仍然可用
ssss -tulnp更快,推荐
lsoflsof -i :PORT查找某个端口的进程
fuserfuser -n tcp PORT显示占用该端口的进程 ID