我很清楚以前有人问过这个问题的变体,但我仍然没有找到特别好的答案。
我要做的是编写一个 Python 脚本,该脚本将测量当前的带宽使用情况以及进程及其所有子进程上传/下载的总字节数,如果这些值中的任何一个超过用户定义的阈值,则将其终止。其目的是限制备份客户端的网络使用。
我考虑了几个测量进程带宽的选项:
bwmon
完全符合我的要求,但令人沮丧的是,它以目前的形式对我不起作用。问题是它依赖于读取bytes=
和packets=
字段/proc/net/ip_conntrack
来测量带宽。出于某种原因,这些字段对我来说根本不存在——我怀疑它可能是为了做不同的内核版本。目前我发现的最可行的解决方案是
strace -e trace=recvfrom,sendto -p <PID>
根据这个建议解析输出。但是,这有点混乱并引发了令人讨厌的权限问题 - 为了附加到我需要的现有进程sudo strace
,我更愿意避免从脚本中以超级用户权限运行 shell 命令。
我想知道是否有人有更优雅的建议?
我对 的内容不是很熟悉/proc
,但是如果有一些其他日志文件会列出数据包大小和计数,那么我也许可以修改bwmon
为使用它。