nethogs
是一个基于命令行的网络监控工具,用于实时监视每个进程的网络流量。它可以显示每个进程使用的带宽、连接数和数据包数量等信息。
安装
在大多数Linux发行版中,您可以使用包管理器来安装 nethogs
。例如,在Ubuntu/Debian上,可以使用以下命令安装:
sudo apt-get install nethogs
启动
在终端中输入 nethogs
命令即可启动 nethogs
。默认情况下,它会显示所有正在进行的网络连接的信息。
界面说明
nethogs
的界面以表格的形式呈现,可以通过上下方向键来滚动页面。界面中的每一行都对应着一个进程及其对应的网络流量信息
- 进程ID(PID):显示了正在使用流量的进程的ID。
- 进程名称(Program):显示的是正在使用网络带宽的进程的名称或命令行参数。它用于标识每个进程的身份。例如:“172.18.219.63:56805-172.19.0.2:17017”,代表这是由IP地址为172.18.219.63的主机发起到172.19.0.2的连接。
- 上传速度(Sent):显示了该进程的上传速度,单位是字节/秒。
- 下载速度(Received):显示了该进程的下载速度,单位是字节/秒。
- 总流量(Total):显示了该进程已经使用的总流量,单位是字节。
用法
语法
nethogs [-V] [-h] [-b] [-d seconds] [-v mode] [-c count] [-t] [-p] [-s] [device [device [device ...]]]
选项
-V
: 打印版本信息-h
: 帮助信息-b
: 以“bughunt”模式运行(隐式tracemode),并显示每个进程的网络使用情况和其他相关信息-d
: 指定刷新间隔的秒数,默认为1秒。-v
: 流量显示模式 (0 = KB/s, 1 = total KB, 2 = total B, 3 = total MB). 默认 0-c
: 更新次数。默认值为0(无限制)-t
: 跟踪模式,以文本模式显示结果,记录下每一次刷新的流量信息-p
: 在混杂模式下监听流量(不推荐)-s
:按发送流量进行排序
运行时命令
在nethogs运行时还支持以下相关操作:
q
: 退出s
: 按发送流量进行排序r
: 按接收流量进行排序m
: 切换流量显示模式;total (KB, B, MB) 和 KB/s
工作原理
-
NetHogs通过读取
/proc
文件系统中的网络相关信息来获取进程的网络连接信息。它遍历/proc
目录下的所有进程,并读取每个进程的网络连接信息。 -
对于每个网络连接,NetHogs会读取
/proc/<PID>/fd
目录下的文件描述符信息,以确定与网络连接相关的文件描述符。 -
NetHogs通过读取
/proc/<PID>/net/tcp
和/proc/<PID>/net/udp
文件来获取与网络连接相关的TCP和UDP连接的详细信息,包括源和目标IP地址、端口号等。 -
NetHogs还会读取
/proc/<PID>/cmdline
文件来获取进程的命令行参数,以确定进程的名称。 -
NetHogs根据捕获到的网络数据包的源和目标IP地址、端口号以及数据包大小,计算出每个进程的网络带宽使用情况。
-
NetHogs将收集到的数据按照进程ID、进程名称、源和目标IP地址、端口号等进行统计和显示,以提供实时的网络带宽使用情况。