很多刚接触Linux的朋友都会遇到一个实际的问题:服务器跑得好好的,突然变慢了,或者想看看当前网络到底在干什么,心里没底。其实Linux下查看网络带宽并不复杂,关键是找到适合自己的工具和方法。
用iftop看实时流量最直观
如果你想知道当前哪台机器在跟你的服务器通信、占了多少带宽,iftop是个很好的选择。它就像网络版的top命令,能动态显示各个连接的实时流量。
安装iftop很简单,在CentOS或RHEL上用yum install iftop,在Ubuntu或Debian上用apt install iftop。运行的时候直接输iftop,就能看到一个动态刷新的界面。上面显示的是源IP和目标IP之间的流量速率,单位是比特每秒。你可以按T键切换显示总量linux修改文件名,按S键显示发送流量,按D键显示接收流量。
不过iftop有一个小限制,它需要root权限才能运行,因为要读取网络接口的原始数据。如果直接运行报错,记得加sudo。还有,iftop默认显示的是所有接口的流量,如果你只想看eth0,可以用iftop -i eth0指定接口。这个命令特别适合排查是哪台机器在大量占用带宽,比如发现某个IP一直在上传数据,就能快速定位问题。
nload显示简洁明了的进出带宽
如果你只是想知道当前网卡的总入口和出口带宽是多少,不想看复杂的连接列表,那nload比iftop更合适。它直接显示整个网卡的实时流量,左边是入口,右边是出口,还有流量曲线图。
安装nload也很方便,包管理工具直接装就行。运行nload之后,界面非常清爽,顶部是当前流量速率,中间是历史曲线,底部是累计流量。你可以用左右方向键切换不同的网卡。这个工具的好处是数据一目了然,不用去分析复杂的IP列表。
但nload也有不足,它只能看总带宽,不能告诉你具体是哪些连接在占用。如果你需要定位问题,可能还得搭配其他工具。不过在日常巡检或者快速确认网络负载情况时,nload绝对够用了。比如你觉得服务器卡了linux培训学校,先跑个nload看看进出口带宽是不是跑满了,如果是,再进一步排查。

dstat和sar适合长期监控和日志记录
有时候你需要查看网络带宽的历史数据,或者想跟CPU、内存、磁盘一起综合分析,这时候dstat和sar就派上用场了。
dstat是一个全能型的系统监控工具,它可以同时显示CPU、磁盘、网络、内存等多项指标。运行dstat -n就能看到网络收发包和流量情况。dstat默认是每秒刷新一次,你可以加参数调整间隔和次数,比如dstat -n 5 10就是每5秒输出一次,一共输出10次。它的输出是文本格式,方便重定向到文件保存。
sar是sysstat包里的工具,功能更强大。先安装sysstat包,然后启用系统服务,它就会自动收集系统的各项性能数据。查看网络带宽用sar -n DEV 1 3,意思是每秒显示一次网络设备统计,显示3次。sar的好处是能查看历史数据,比如用sar -n DEV -f /var/log/sa/sa22查看22号那天的网络记录。这对于分析历史故障或者做性能基准测试很有用。
不过dstat和sar的输出没有iftop那么直观,需要看数字来判断。如果你刚开始用linux下查看网络带宽,建议先看man帮助文档,熟悉各个字段的含义。另外这些工具默认显示的是字节数,注意跟比特数区分,网络带宽通常用比特表示,比如100Mbps的网卡,实际字节速率是12.5MB/s左右。
用bmon和nethogs按进程看带宽
有时候你会发现网络流量莫名其妙很大,但用iftop看了半天,也找不到是哪个外部IP在搞鬼。这时候很可能是本机的某个进程在大量上传或下载,比如某个后台服务或者恶意程序。bmon和nethogs可以帮助你按进程定位带宽占用。
nethogs这个工具很特别,它不显示连接,而是显示进程名和对应的流量。运行nethogs eth0,就能看到每个进程的发送和接收速率。比如你看到有个叫php-fpm的进程上传带宽很高,那就可以去查对应的应用日志了。bmon功能类似,但界面更丰富,支持图形化显示。

这些工具安装也很简单,直接yum或apt安装即可。不过要注意,它们同样需要root权限才能准确获取进程信息。使用的时候如果发现进程列表不全,检查一下权限。还有一个细节linux下查看网络带宽,nethogs默认按进程名分组,如果你看到一堆未知进程,可以按M键切换显示模式。
对于运维人员来说,nethogs几乎是排查“谁在偷跑流量”的利器。我曾经遇到过一台服务器带宽被占满,用iftop看到是对外发送数据,但IP都是正常的外部服务,最后用nethogs一查,发现是某个被植入的挖矿进程在偷偷上传数据。所以这个工具在安全排查场景下也很有用。
Linux下查看网络带宽的工具远不止这些,但上面这几款基本涵盖了日常运维的大部分场景。短时间排查用iftop或nload,长期监控用dstat或sar,定位进程用nethogs。根据实际需求选择合适的工具,比盲目装一堆软件更高效。
