65

私は最近、ファイル ディスクリプタを「リーク」する Linux プロセスを使用しました。ファイル ディスクリプタを開き、一部を適切に閉じませんでした。

これを監視していれば、プロセスが限界に達していることを前もって知ることができました。

Ubuntu Linux システムで特定のプロセスの FD 使用率を確認する Bash または Python の良い方法はありますか?

編集:

開いているファイル記述子がいくつあるかを確認する方法がわかりました。プロセスに許可されているファイル記述子の数を知る必要があるだけです。一部のシステム (Amazon EC2 など) にはファイルがありません/proc/pid/limits

4

7 に答える 7

128

のエントリを数えます/proc/<pid>/fd/。プロセスに適用されるハード リミットとソフト リミットは、 にあります/proc/<pid>/limits

于 2009-08-31T12:34:13.950 に答える
2

あなたはbash/pythonメソッドを求めました。ulimit が最良の bash アプローチになります (手動で変更する/proc/$pid/fdなどを除きます)。Python の場合は、リソース モジュールを使用できます。

import resource

print(resource.getrlimit(resource.RLIMIT_NOFILE))
$ python test.py

(1024, 65536)

resource.getrlimitgetrlimitC プログラムでの呼び出しに相当します。結果は、要求されたリソースの現在の値と最大値を表します。上記の例では、現在の (ソフト) 制限は 1024 です。値は、最近の Linux システムの一般的なデフォルトです。

于 2009-09-05T13:02:13.553 に答える
2

lsof -p {PID}指定された pidを定期的に呼び出すスクリプトを作成してみることができます。

于 2009-08-31T09:41:28.557 に答える