Linux 端口监控
使用 lsof
$ sudo lsof -i :7890
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 2572960 lx 9u IPv4 35637087 0t0 TCP localhost:7890 (LISTEN)
sshd 2572960 lx 13u IPv4 39517231 0t0 TCP localhost:7890->localhost:44446 (CLOSE_WAIT)
sshd 2572960 lx 49u IPv4 39437826 0t0 TCP localhost:7890->localhost:51354 (ESTABLISHED)
curl 2980815 lx 5u IPv4 39533618 0t0 TCP localhost:51354->localhost:7890 (ESTABLISHED)
- 第一条表示 sshd 正在监听 7890 端口。
- 第二条表示远端(localhost:44446)已经发送了关闭请求,但是 sshd 还没有完全关闭连接。
- 第三条表示 sshd 的 7890 端口已与 localhost:51354 端口建立连接
- 第四条表示 curl 的 51354 端口已与 localhost:7890 建立连接
也就是说,curl 正在通过 sshd 的 7890 端口代理流量。
LISTEN:本地程序正在监听端口,等待建立连接。ESTABLISHED:表示一个活动的连接。CLOSE_WAIT:远端(箭头右边)已经发送了关闭请求,但本地程序还没有完全关闭连接。
使用 netstat
$ sudo netstat -tulnp | grep ':22'
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 963/sshd: /usr/sbin
使用 ss
ss 是一种比 netstat 性能更高的工具
$ sudo ss -tulnp | grep ':22'
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=963,fd=3))
t: 显示 TCP 套接字使用情况u: 显示 UDP 套接字使用情况l: 只显示正在监听的端口n: 不解析服务名称,比如不把 22 端口显示为 sshp: 显示正在使用套接字的进程
使用 fuser
$ sudo fuser 22/tcp
22/tcp: 963 292636 292692 292957 293033

浙公网安备 33010602011771号