菜鸟科技网

Linux命令如何实时查看网络流量?

在Linux系统中,监控网络流量是系统管理和故障排查的重要技能,通过命令行工具,管理员可以实时查看网络接口的流量统计、连接状态、数据包传输情况等信息,从而有效定位网络瓶颈、检测异常流量或优化网络配置,以下将详细介绍Linux中常用的网络流量查看命令,涵盖基础工具、高级分析工具及实际应用场景。

Linux命令如何实时查看网络流量?-图1
(图片来源网络,侵删)

基础流量监控命令

ifconfigip 命令

ifconfig(传统工具)和ip(现代推荐工具)是查看网络接口基本信息的基础命令,通过ip -s link showifconfig -a,可以获取接口的接收(RX)和发送(TX)字节数、数据包数量、错误数等流量统计。

ip -s link show eth0  

输出中RXTX字段分别表示接收和发送的总字节数及数据包数,适合快速检查接口流量是否异常。

netstat 命令

netstat用于查看网络连接状态、路由表和接口统计,结合-i参数可显示所有接口的数据包统计:

netstat -i  

输出包括接口名称、接收/发送的数据包、错误数、丢弃数等,适合排查接口层面的流量问题。

Linux命令如何实时查看网络流量?-图2
(图片来源网络,侵删)

ss 命令

作为netstat的替代工具,ss提供更高效的网络连接统计,使用-s参数可汇总TCP、UDP等协议的连接数:

ss -s  

通过-i参数还可显示接口统计信息,适合快速分析网络连接负载。

实时流量监控工具

iftop 命令

iftop以实时列表形式显示网络接口的流量情况,按带宽使用率排序,并显示源/目标IP的实时连接速度,安装后直接运行:

iftop -i eth0  

支持交互操作,如按n显示主机名、按s按端口排序等,适合定位高流量进程或IP。

Linux命令如何实时查看网络流量?-图3
(图片来源网络,侵删)

nethogs 命令

nethogs按进程显示网络带宽使用情况,可直接定位占用带宽的进程。

nethogs eth0  

输出包括进程ID、名称、接收/发送速度,适合排查恶意程序或异常进程导致的流量激增。

vnstat 命令

vnstat通过后台服务持续记录网络流量,支持按天、月、年统计历史数据,首次使用需初始化数据库:

vnstat -u -i eth0  

之后可通过vnstat查看实时流量,vnstat -d查看每日统计,适合长期流量趋势分析。

高级流量分析工具

tcpdump 命令

tcpdump是强大的网络抓包工具,可捕获并分析数据包内容,捕获eth0接口的所有HTTP流量:

tcpdump -i eth0 port 80 -w capture.pcap  

结合Wireshark分析抓包文件,适合深度排查协议层问题或异常数据包。

iptrafnload

  • iptraf:提供交互式界面,实时显示接口流量、TCP/UDP连接、网络状态等,运行iptraf后选择“Interface”即可监控指定接口。
  • nload:以图形化方式显示输入/输出流量,直观展示带宽使用情况,运行nload eth0即可实时查看。

bmonbwm-ng

  • bmon:基于文本的带宽监控工具,支持彩色流量条和实时统计。
  • bwm-ng:可监控多个接口的带宽,支持自定义刷新间隔和输出格式。

脚本化与自动化监控

对于长期监控需求,可通过结合awkgrep等工具编写脚本,每5秒采集一次eth0的接收字节数并计算速率:

#!/bin/bash
prev=$(cat /sys/class/net/eth0/statistics/rx_bytes)
while true; do
    sleep 5
    curr=$(cat /sys/class/net/eth0/statistics/rx_bytes)
    rate=$(( (curr - prev) / 1024 / 5 ))
    echo "RX Rate: ${rate} KB/s"
    prev=$curr
done

此类脚本可集成到监控系统中(如Zabbix、Prometheus),实现自动化告警。

工具对比与使用场景

以下表格总结了常用工具的特点及适用场景:

工具名 主要功能 适用场景 优点 缺点
ip/ifconfig 查看接口统计信息 基础接口状态检查 系统内置,无需安装 功能单一,无实时流量
iftop 实时流量排序及IP连接监控 定位高流量IP或连接 直观显示,支持交互 需安装,依赖libpcap
nethogs 按进程统计带宽 排查异常进程流量 精确到进程,资源占用低 不支持IPv6
vnstat 历史流量统计 长期流量趋势分析 支持持久化存储,无需持续运行 实时性较差
tcpdump 抓包及协议分析 深度网络故障排查 功能强大,可分析任意协议 需专业知识,输出复杂

相关问答FAQs

Q1: 如何查看某个进程占用的网络带宽?
A1: 可使用nethogs工具,命令为nethogs -p(显示进程ID)或nethogs(直接显示进程名),运行nethogs eth0后,按q退出,输出列表中“SENT”和“RECV”列分别表示该进程的发送和接收速度,若需更详细统计,可结合pidstat -t查看线程级网络使用情况。

Q2: 如何统计过去24小时内某个接口的总流量?
A2: 使用vnstat工具,首先确保已初始化数据库(vnstat -u -i eth0),然后运行vnstat -h查看每小时统计,或vnstat -d查看每日统计,若需精确到24小时内的总流量,可结合awk处理输出:vnstat -d | tail -n 1 | awk '{print $9" "$10}',其中第9、10列分别为总接收和发送流量(单位为KB/MB)。

分享:
扫描分享到社交APP
上一篇
下一篇