看看谁在连网 - netstat
.. _linux_netstat_beginner:
.. note::
不识庐山真面目,只缘身在此山中。
宋 苏轼《题西林壁》
排查“端口占着谁”“机器对外连了哪”时,老一辈工具箱里常翻出 netstat。新系统更推 ss,但文档、考试和旧机子上,netstat 仍随处可见,值得会读。
netstat 的官方定义为:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
命令格式
1 | $ netstat [选项] |
常用组合:
-a:含监听与已建立的连接-t/-u:只看 TCP / UDP-n:地址端口用数字,不做反查(更快)-p:带上进程(常需权限)-l:只看监听-r:路由表-s:协议统计
看监听端口
1 | $ netstat -tuln |
-tuln 是高频口头禅:TCP+UDP、监听、数字显示。输出里 Local Address 的端口就是服务挂着的地方。
看连接并带上进程
1 | $ sudo netstat -tnp |
-p 能帮你对上“这个 ESTABLISHED 到底是哪个程序”。没有权限时进程列可能是空的。
瞄一眼路由
1 | $ netstat -rn |
默认网关、网段怎么走,旧习惯会来这里看一眼;现在也可以用 ip route。
netstat 在部分发行版已标为过时,新环境优先学 ss -tuln;但看见同事敲 netstat -anp,你至少知道他在干嘛。