最直接有效的方式是使用 netstat -tn,因为它仅筛选 TCP 协议、以数字形式显示地址端口,并默认只输出 ESTABLISHED 状态连接,避免监听或关闭状态干扰,结果清晰高效。
要查看所有已建立的 TCP 连接,最直接有效的方式是使用 netstat -tn,它只显示处于 ESTABLISHED 状态的活跃连接,不包含监听端口或未完成握手的连接,结果清晰、干扰少。
参数组合决定输出范围和可读性:
若用 netstat -a 或 netstat -t,会混入大量监听中或已关闭的连接,需额外用 grep ESTABLISHED 筛选,反而多一步且易漏匹配。
典型输出如下:
tcp 0 0 192.168.1.100:22 192.168.1.200:49152 ESTABLISHED192.168.1.100:22 表示本机 SSH 服务正与对方通信)192.168.1.200:49152 是客户端临时端口)ESTABLISHED,表示三次握手已完成,数据双向传输中仅看连接不够?想确认哪个程序在通信?加上 -p(需 root 权限):
sudo netstat -tnp | grep ESTABLISHED
1234/sshd 或 5678/mysqld
-p 会提示 “can't resolve port number”,必须用 sudo
实际运维中常结合管道提升效率:
sudo netstat -tnp | grep :3306 | grep ESTABLISHED
netstat -tn | grep ESTABLISHED | wc -l
netstat -tn | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr