netstat 是 Linux 经典网络统计工具,用于查看端口监听、连接状态、路由表及接口统计;常用命令包括 -tuln 查监听端口、-tan 查活跃连接、-i 查网卡统计,配合 sudo/grep/watch 可增强排查能力。
netstat 是 Linux 系统中用于查看网络连接、监听端口、路由表和接口统计的经典命令行工具。虽然现代系统更倾向用 ss(性能更好),但 netstat 因输出直观、参数丰富,仍是排查网络问题的首选之一。
日常使用中,几个高频组合能覆盖大部分需求,建议熟记:
route -n
执行 netstat -tuln 后典型输出如下:
Proto Recv-Q Send-Q Local Address Foreign Address State
重点关注这几列:
tcp、udp 或 unix;UDP 无连接状态,所以 State 列为空或显示 *
0.0.0.0:22 表示监听所有 IPv4 地址的 22 端口;127.0.0.1:631 表示仅本地可访问LISTEN —— 服务正在等待连接(监听端口)ESTABLISHED —— 双方已握手成功,正常通信中TIME_WAIT —— 主动关闭方等待确认,短连接多时该状态会大量出现CLOSE_WAIT —— 对端已关闭,本机未调用 close,可能程序未正确释放资源判断某个端口(如 3306)是否已被监听,分两步操作更可靠:
LISTEN 行;有即表示被占用-p 查归属:sudo netstat -tulnp | grep :3306,末尾会显示进程名和 PID,例如 mysqld 或 java
-p 时,非本用户进程可能显示为 - 或权限不足,此时需 sudolsof -i :3306 辅助验证netstat 默认不显示监听端口,必须显式加 -l;只加 -a 也不够,因为 -a 是“所有连接”,但 LISTEN 属于服务端 socket,需配合 -l 才能完整呈现。
CentOS 7+/Ubuntu 18.04+ 等较新系统默认不预装 netstat,需手动安装:
sudo yum install -y net-tools(RHEL/CentOS)
sudo apt install -y net-tools(Debian/Ubuntu)
输出中 Recv-Q 和 Send-Q 正常应为 0;若持续非零,说明应用读写阻塞或网络拥塞,需进一步查进程或网络链路。