gpt4 book ai didi

python - 跟踪进程及其子进程使用的网络带宽

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:39 26 4
gpt4 key购买 nike

我很清楚之前有人问过这个问题的变体,但我仍然没有找到特别好的答案。

我想做的是编写一个 Python 脚本,该脚本将测量当前带宽使用情况以及进程及其所有子进程上传/下载的总字节数,并在这些值中的任何一个超过用户定义的阈值时将其终止.其目的是限制备份客户端的网络使用。

我考虑了几个测量进程带宽的选项:

  • bwmon 完全我想要的,但令人沮丧的是,它在当前形式下对我不起作用。问题是它依赖阅读 bytes=packets=来自 /proc/net/ip_conntrack 的字段为了测量带宽。出于某种原因,这些字段对我来说不存在 - 我怀疑可能是为了执行不同的内核版本。

  • 目前我找到的最可行的解决方案是解析 strace -e trace=recvfrom,sendto -p <PID> 的输出根据 this suggestion .然而,这有点困惑并引发了讨厌的权限问题 - 为了附加到现有进程,我需要 sudo strace ,并且我宁愿避免从脚本中以 super 用户权限运行 shell 命令。

不知道有没有人有更优雅的建议?

我对/proc的内容不是很熟悉, 但如果有一些其他日志文件将列出数据包大小和计数,那么我也许可以修改 bwmon改用它。

最佳答案

不是与编程相关的答案,而是:尝试这样做:

sudo modprobe ip_conntrack
sysctl -w net.netfilter.nf_conntrack_acct=1

全局启用模块和 sysctl 设置是特定于发行版的,但至少在您重新启动之前,bwmon如果需要的话应该可以工作 bytespackets/proc/net/ip_conntrack .

基于 http://ubuntuforums.org/showthread.php?t=2046187http://forums.gentoo.org/viewtopic-p-6677939.html (因此最终在 Google 上)。

关于python - 跟踪进程及其子进程使用的网络带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com