38

Linux では、ulimit -nプロセスのファイル記述子数の制限を変更または表示するために使用できlsof -p nnn | wc -l、実際のファイル記述子の使用状況を一貫して報告するようです。

ただし、Mac OS X ではlsof -p nnn | wc -l、制限を超える数値が返されることがあります。lsofこれはファイル記述子以上のものを返すことを意味すると思いますが、何が何であるかわかりません。

結論: Mac OS X でファイル記述子の使用状況を正確にカウントするにはどうすればよいですか?

4

4 に答える 4

11

lsof は、ファイル記述子だけでなく多くのことを表示できますが、カウントを膨らませる可能性が高いもののほとんどは、アプリケーション用にロードされたフレームワークとライブラリです。「FD」列を見て、行がファイル記述子であるかどうかを確認できます。この場合、数字であり、その後にモードを示す文字が続く可能性があります。完全なリストについては、lsof の man ページを参照してください)。

大まかな概算が必要な場合は、トイレの前に「grep -v " txt "」を追加すると、正確な値にかなり近づきます。正確な値が必要な場合は、正規表現を組み合わせて、そのファイラーを介して正確に FD 列で出力をフィードする必要があります。

于 2009-04-28T14:29:08.677 に答える
5

私はアンダースの答えを修正しました。今では、特定のプロセスの開かれた fd 番号のみが表示されます。

FCOUNT=`lsof -p $1 | grep -v " txt " | wc -l`;echo "PID: $1 $FCOUNT" | sort -nk3

例:

$ ./fd-count.sh 5926                                                                                                           
PID: 5926       97
于 2015-09-21T02:03:47.393 に答える
3

ファイル記述子がたくさんあるプロセスを探していたので、次のようなものだと思います

for pid in `ps aux | tail -n +2 | awk '{print $2}'`; do FCOUNT=`lsof -p $pid | grep -v " txt " | wc -l`; echo "PID: $pid $FCOUNT"; done | sort -nk3
于 2014-03-07T21:07:26.647 に答える