ユーザーが開いたファイル記述子の数を取得する方法

ユーザーが開いたファイル記述子の数を取得する方法

わかりましたlsofls /proc/*/fdしかし、私が知っている限り、それらのどれも原子的ではありません。後者の場合は、ユーザーのすべてのPIDを取得してからそれに基づいてフィルタリングする必要があるため、一部のファイル記述子が閉じられる可能性があります。

ユーザーの最大制限がなくなると、OSがFDの生成を拒否するため、OSがその番号を追跡するため、システムコールなどがある可能性があります。

答え1

私は詳細な検索をしていませんが、あなたが探しているものがLinuxには存在しないようです。ファイルディスクリプタを開くにはグローバルロックは必要なく、プロセス固有のロックのみが必要なため、マルチコアシステムでは、開かれたファイルディスクリプタの数を計算するために使用するすべてが、他のスレッドが他のコアドキュメントを開いたり閉じたりすると同時に実行できます。

Linux には、開かれたファイルの総数に対するグローバル制限はありません。明確なユーザー固有の制限はありません。ユーザーあたりの制限プロセス、ユーザーごとに開いているファイルの数を間接的に制限するが明示的に追跡されないファイル記述子の数に対するプロセス固有の制限もあります。

ナビゲーション/proc(つまり、lsof後ろで実行されるアクション)が最高です。/procプロセスに関する情報を取得するために使用されるLinux API。

関連情報