この質問のバリエーションが以前に尋ねられたことはよく知っていますが、特に良い答えはまだ見つかりません.
私がやろうとしているのは、現在の帯域幅の使用と、プロセスとそのすべての子によってアップロード/ダウンロードされた合計バイト数を測定し、これらの値のいずれかがユーザー定義のしきい値を超えた場合にそれを強制終了する Python スクリプトを作成することです。その目的は、バックアップ クライアントのネットワーク使用を制限することです。
プロセス帯域幅を測定するためのいくつかのオプションを検討しました。
bwmon
私が望んでいることを正確に実行しますが、イライラすることに、現在の形式では機能しません。問題は、帯域幅を測定するために読み取りbytes=
とpackets=
フィールドに依存していることです。/proc/net/ip_conntrack
何らかの理由で、これらのフィールドは私には存在しません-異なるカーネルバージョンを実行するためではないかと思います。現在、私が見つけた最も実行可能な解決策は、この提案
strace -e trace=recvfrom,sendto -p <PID>
に従っての出力を解析することです。ただし、これは少し面倒で、アクセス許可の問題が発生します。既存のプロセスにアタッチするには、必要があります。また、スクリプト内からスーパーユーザー権限でシェル コマンドを実行することは避けたいと考えています。sudo strace
誰かがよりエレガントな提案を持っているのだろうか?
の内容にはあまり詳しくありませんが/proc
、パケット サイズとカウントをリストするログ ファイルが他にある場合は、bwmon
代わりにこれを使用するように変更できます。