如何查看某个进程占用了多少网络流量?

查看进程网络流量的方法取决于操作系统,以下是主流系统的常用方法:

Linux 系统

1. nethogs(最直观)

# 安装
sudo apt install nethogs    # Debian/Ubuntu
sudo yum install nethogs    # RHEL/CentOS

# 使用(需要root权限)
sudo nethogs
# 或监控特定网卡
sudo nethogs eth0

2. iftop(按流量排序)

# 安装
sudo apt install iftop

# 使用
sudo iftop -P
# 按 p 显示端口,按 P 显示进程

3. nload + ss/netstat

# 查看总体流量
nload

# 查看进程连接
ss -tunap | grep 进程名
# 或
netstat -tunap | grep 进程名

4. systemd-cgtop(systemd系统)

systemd-cgtop
# 按 n 切换网络统计

Windows 系统

1. 任务管理器

  • Ctrl+Shift+Esc 打开任务管理器
  • 点击"性能"选项卡 → 打开"资源监视器"
  • 在"网络"选项卡中查看各进程流量

2. 资源监视器

  • Win+R 输入 resmon.exe
  • 直接查看"网络"部分的进程流量

3. Process Explorer(微软官方工具)

  • 下载地址:https://docs.microsoft.com/sysinternals
  • 查看列中添加"Network Send/Receive"显示流量

4. PowerShell

# 查看当前网络连接
Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,OwningProcess

# 结合进程名
Get-Process | Where-Object {$_.Id -eq 进程ID}

macOS 系统

1. 活动监视器

  • 打开"活动监视器"
  • 点击"网络"选项卡查看流量

2. nettop(命令行)

# 实时监控
sudo nettop -P

# 监控特定进程
nettop -p 进程ID

3. lsof + 网络统计

# 查看进程打开的网络连接
lsof -i -P | grep 进程名

跨平台工具

bmonbwm-ng

# 安装 bwm-ng
sudo apt install bwm-ng

# 使用
bwm-ng

持续监控和记录

使用 vnStat + 进程关联

# 安装 vnStat
sudo apt install vnstat

# 配置监控(需要额外脚本关联进程和流量)

自定义脚本示例

#!/bin/bash
# 监控特定进程的流量
PID=$(pgrep 进程名)
if [ -n "$PID" ]; then
    cat /proc/$PID/net/dev
fi

专业监控工具

  • Wireshark:深度包分析,可过滤特定进程流量
  • ntopng:专业的网络流量监控
  • Prometheus + Node Exporter:企业级监控方案

快速诊断技巧

  1. 找出高流量进程

    # Linux 快速检查
    sudo ss -tunap | awk '{print $6}' | cut -d: -f1 | sort | uniq -c | sort -n
  2. 实时监控特定端口

    # 监控 80 端口的流量
    sudo tcpdump -i any port 80 -nn

选择哪种方法取决于:

  • 是否需要实时监控
  • 是否需要历史数据
  • 系统权限级别
  • 用户界面偏好(CLI 或 GUI)

对于日常使用,Linux 推荐 nethogs,Windows 推荐资源监视器,macOS 推荐活动监视器

云服务器