linux怎么查看进程占用网速和流量的使用情况

来源:菜鸟站长作者:BIT程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《linux怎么查看进程占用网速和流量的使用情况》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《linux怎么查看进程占用网速和流量的使用情况》有用,将其分享出去将是对创作者最好的鼓励。

在linux系统中,系统级的网络流量监控工具只能看到整体网卡的收发情况,无法直接对应到具体进程,要查看进程占用的网速和流量,需要使用支持进程级统计的专用工具。不同工具的功能侧重有所不同,用户可以根据实际需求选择合适的工具。

常用进程网络监控工具介绍

1. nethogs

nethogs是一款专门用于查看进程实时网速的工具,它会直接按进程分组显示每个进程的上传和下载速度,使用起来非常直观,适合快速定位当前占用带宽过高的进程。

安装方法

不同linux发行版的安装命令如下:

  • Ubuntu/Debian系统:sudo apt-get install nethogs
  • CentOS/RHEL系统:sudo yum install nethogs,如果默认源没有该包,需要先安装epel源
  • Arch Linux系统:sudo pacman -S nethogs

使用方法

直接执行以下命令启动监控,默认会监控所有网卡:

# 监控所有网卡,需要root权限
sudo nethogs
# 监控指定网卡,比如eth0
sudo nethogs eth0

输出内容中,PID是进程ID,USER是进程所属用户,PROGRAM是进程对应的程序路径,DEV是网卡名称,SENT是进程的上传速度,RECEIVED是进程的下载速度。

常用交互快捷键:

  • m:切换速度单位,支持KB/s、MB/s、KB、MB等模式
  • r:按RECEIVED列排序
  • s:按SENT列排序
  • q:退出监控

2. iftop

iftop主要用来监控网卡的实时流量,虽然默认不显示进程信息,但可以通过参数开启进程对应功能,适合查看整体网卡流量分布的同时关联对应进程。

安装方法

  • Ubuntu/Debian系统:sudo apt-get install iftop
  • CentOS/RHEL系统:sudo yum install iftop

使用方法

执行以下命令启动监控,同时显示端口对应的进程信息:

# 监控所有网卡,显示端口对应的进程
sudo iftop -n -P
# 监控指定网卡eth0
sudo iftop -n -P -i eth0

输出中,中间部分会显示每对IP和端口之间的流量情况,最下方会统计当前网卡的总流量、平均流量等数据。其中-n参数表示不进行DNS反向解析,-P参数表示显示端口对应的进程信息。

3. 基于/proc目录手动统计

如果需要长期统计某个进程的累计流量,也可以通过读取/proc目录下进程的网络统计文件实现,不需要安装额外工具。

每个进程的网络流量统计文件位于/proc/[PID]/net/dev,里面记录了该进程对应网卡的所有流量数据,不过这个文件是进程所属网络命名空间的网卡统计,更准确的方式是结合/proc/net/dev和进程的socket信息统计。

以下是一个简单的统计指定进程累计流量的脚本示例:

#!/bin/bash
# 传入进程PID作为参数
PID=$1
# 获取进程所有的socket inode
INODES=$(ls -l /proc/$PID/fd 2>/dev/null | grep socket | awk '{print $NF}' | cut -d: -f2)
# 初始化累计流量
TOTAL_RX=0
TOTAL_TX=0
# 遍历/proc/net/tcp和/proc/net/udp文件,匹配对应的inode统计流量
for INODE in $INODES; do
    # 统计TCP流量
    while read line; do
        RX=$(echo $line | awk '{print $3}')
        TX=$(echo $line | awk '{print $4}')
        TOTAL_RX=$((TOTAL_RX + RX))
        TOTAL_TX=$((TOTAL_TX + TX))
    done <<(grep ":$INODE " /proc/net/tcp 2>/dev/null)
    # 统计UDP流量
    while read line; do
        RX=$(echo $line | awk '{print $3}')
        TX=$(echo $line | awk '{print $4}')
        TOTAL_RX=$((TOTAL_RX + RX))
        TOTAL_TX=$((TOTAL_TX + TX))
    done <<(grep ":$INODE " /proc/net/udp 2>/dev/null)
done
echo "进程$PID累计下载流量: $((TOTAL_RX / 1024)) KB"
echo "进程$PID累计上传流量: $((TOTAL_TX / 1024)) KB"

使用方式:给脚本添加执行权限后,传入目标进程PID即可查看累计流量:

chmod +x count_flow.sh
sudo ./count_flow.sh 1234

工具选择建议

如果是临时排查当前哪个进程占用网速过高,优先选择nethogs,操作简单结果直观;如果需要查看网卡的整体流量分布,同时关联少量进程信息,可以选择iftop;如果需要长期统计某个进程的累计流量,或者在没有安装额外工具的环境下排查问题,可以使用/proc目录手动统计的方式。

工具名称核心功能适用场景是否需要安装
nethogs实时显示进程级上传下载速度快速定位高带宽消耗进程
iftop监控网卡实时流量,可关联进程端口查看整体网卡流量分布
/proc手动统计统计进程累计流量无额外工具环境下的长期流量统计

linux进程网速查看流量监控nethogsiftop修改时间:2026-06-19 21:09:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。