加油
努力

Linux服务器上有哪些命令可以查看流量使用?

在 Linux 服务器上,有多种命令可以查看网络流量使用情况,适用于不同粒度(整体、接口级、进程级、实时/历史)和场景(调试、监控、排障)。以下是常用且实用的命令分类整理:

一、按网络接口查看实时/累计流量(最常用)

  1. ip -s link(推荐,现代标准)

    ip -s link show eth0    # 查看 eth0 的收发字节数、包数、错误等(累计值)
    watch -n 1 'ip -s link show eth0 | grep "bytes|packets"'  # 每秒刷新,观察变化

    ✅ 优点:内核原生、轻量、无依赖;显示 RX/TX 字节、包数、丢包、错误等。

  2. cat /proc/net/dev(底层可靠)

    cat /proc/net/dev
    # 或格式化查看(去除头尾,只留关键列):
    awk '{if(NR>2) print $1, $2, $10}' /proc/net/dev | column -t

    ✅ 输出字段:iface: rx_bytes tx_bytes ... rx_packets tx_packets;适合脚本解析。

  3. ifconfig(传统,部分系统已弃用但仍广泛可用)

    ifconfig eth0 | grep "RX bytes|TX bytes"
    # 注意:需 `net-tools` 包(如 `sudo apt install net-tools`)

二、实时流量监控(动态刷新,类 top 界面)

  1. iftop(按连接/主机排序,类似 top)

    sudo iftop                    # 默认监控 eth0,按流量排序
    sudo iftop -P                   # 显示端口
    sudo iftop -f "port 80"         # 过滤 HTTP 流量

    ⚠️ 需安装:sudo apt install iftop(Debian/Ubuntu)或 sudo yum install iftop(RHEL/CentOS)

  2. nethogs(按进程/用户分组,精准定位“谁在吃带宽”)

    sudo nethogs eth0     # 按进程实时显示带宽占用(KB/s)
    sudo nethogs -p       # 显示 PID

    ✅ 强烈推荐用于排查异常进程(如X_X、备份、下载任务)。
    ⚠️ 安装:sudo apt install nethogs(支持 libpcap

  3. bmon(图形化终端界面,支持多接口、历史趋势)

    sudo bmon -p eth0     # 简洁界面,支持颜色、图表、导出

    ⚠️ 安装:sudo apt install bmon

  4. vnstat(轻量级 历史 流量统计,需后台守护进程)

    sudo apt install vnstat
    sudo vnstat -u -i eth0    # 初始化数据库
    sudo systemctl enable vnstat && sudo systemctl start vnstat
    vnstat -l                 # 实时速率(last 10s)
    vnstat -h                 # 小时级统计
    vnstat -d                 # 日统计
    vnstat -m                 # 月统计

    ✅ 优势:不依赖抓包,低开销,断电不丢数据(基于 /proc/net/dev 定期采样)。


三、高级/诊断用途

  1. ss + awk 组合(快速查看活跃连接及流量估算)

    ss -ti | head -20  # 显示 TCP 连接的 `bytes_acked`, `bytes_received`(需内核支持)
  2. tcpdump + wireshark/tshark(深度抓包分析)

    sudo tcpdump -i eth0 -w traffic.pcap port 80 &  # 抓包保存
    tshark -r traffic.pcap -qz io,stat,10  # 每10秒统计流量

    ⚠️ 仅限临时诊断,避免长期运行(性能开销大)。

  3. sar(来自 sysstat,综合系统监控)

    sudo apt install sysstat
    sudo systemctl enable sysstat && sudo systemctl start sysstat
    sar -n DEV 1 5      # 每秒采样,共5次(显示各接口流量 KB/s)
    sar -n EDEV 1 5     # 查看错误统计

四、快速检查技巧(运维小贴士)

  • 🔍 查最高流量进程(无需安装)

    sudo lsof -i -P -n | grep ESTABLISHED | awk '{print $1,$9}' | sort | uniq -c | sort -nr | head -10
  • 📈 简单实时速率计算(每2秒差值)

    old=$(cat /proc/net/dev | awk '/eth0/{print $2,$10}'); sleep 2; new=$(cat /proc/net/dev | awk '/eth0/{print $2,$10}'); echo "$new - $old" | awk '{printf "RX: %.2f KB/s, TX: %.2f KB/sn", ($1-$3)/2048, ($2-$4)/2048}'

📌 选择建议: 场景 推荐命令
✅ 快速看网卡总流量(累计) ip -s linkcat /proc/net/dev
✅ 实时看哪个 IP/端口占流量 iftop -P
✅ 查哪个进程在疯狂发包 nethogs(首选!)
✅ 长期监控+月度报表 vnstat(配置一次,永久受益)
✅ 生产环境轻量监控 sar -n DEV(配合 cron 日志)

需要我为你写一个一键流量监控脚本(含接口、TOP5进程、速率曲线)或解释某个命令的输出字段含义?欢迎继续提问 😊

云服务器