在日常运维中,图形界面虽然直观,但一到远程连接卡顿或者批量操作时,命令行反而成了最可靠的帮手。尤其是在管理服务器网络状态时,几个常用的命令行工具几乎每天都会用上。
ping:检查连通性的第一反应
就像你打电话前先确认对方有没有开机一样,ping 是排查网络是否通畅的第一步。它能告诉你目标主机是否可达,延迟大概多少。
ping www.baidu.com
如果发现丢包严重或者延迟高,问题可能出在网络链路或对方服务上,这时候再深入查也不迟。
traceroute:看清数据包走的路
有时候网络不通,ping 不回,但你想知道是卡在自家门口,还是运营商中途掉了链子?traceroute 能显示数据包经过的每一跳。
traceroute www.google.com
比如看到请求停在某个运营商节点,基本就能判断不是你这边的问题,沟通起来也有依据。
netstat:查看端口和连接状态
服务起好了却访问不了?可能是端口没监听,也可能是被占用了。netstat 能列出当前所有网络连接和监听端口。
netstat -tuln
看到 0.0.0.0:80 在监听,说明 Web 服务正常开着;如果啥都没有,就得回头检查服务有没有启动成功。
ss:netstat 的更快替代品
现代 Linux 系统更推荐用 ss,它比 netstat 更快,底层直接读取内核信息,尤其适合连接数多的服务器。
ss -tuln
输出格式和 netstat 类似,但响应速度明显更利索,脚本里用它更稳妥。
dig 和 nslookup:排查 DNS 问题
网站打不开,有时候不是网络问题,而是域名解析失败。dig 功能强大,适合详细分析 DNS 查询过程。
dig example.com
而 nslookup 更简单直白,适合快速查一个记录。
nslookup example.com
比如公司内部换了 DNS 服务器,某些域名解析慢,用这两个工具一试就知道问题在哪。
wget 和 curl:测试服务可用性
除了看端口,最好还能确认服务真的返回了内容。curl 可以发起 HTTP 请求,看网页能不能拿回来。
curl -I http://localhost/status
wget 则适合下载文件或静默测试,比如定时拉取监控接口。
wget --timeout=5 http://api.local/health
这两个工具不仅能测通断,还能验证响应头、状态码,比单纯 ping 实在多了。
tcpdump:抓包分析网络行为
遇到诡异问题,比如服务器突然发大量请求,或者收不到回应,就得靠 tcpdump 抓包看真相。
tcpdump -i eth0 port 80 -n -c 10
这条命令会抓取网卡 eth0 上 80 端口的前 10 个数据包,不解析主机名,速度快。虽然输出看起来密密麻麻,但关键时候能定位出是不是有异常连接或攻击行为。
这些命令行工具就像运维的随身工具箱,不需要华丽界面,关键时刻能快速上手,解决问题。熟练掌握它们,半夜接到告警时也能淡定应对。