`lsof -p <pid> |の違いは何ですか?wc -l`および `ls / proc / <pid> / fd | wc -l`?


12

背景:特定のユーザーのプロセスを実行するためのulimitを監視しています。(私は時折、誤った制限を初めてされたプロセスを見ていた。)私はカップルの自称のLinuxの達人を尋ねると、1が提案されlsof -p <pid>、他は示唆しながらls /proc/<pid>/fd、しかし、より正確に最大に向けた実際のカウントを反映しているかについて陽性であったでもありませんプロセスのオープンファイル制限。

それで、どちらですか?

lsof -p <pid> | wc -l

または

ls /proc/<pid>/fd | wc -l

違いについて詳しく説明してください。ありがとう!


3
宿題のように聞こえます。
ewwhite

1
宿題ではありません。より良い説明を追加しました。私はlsofマニュアルページを読みましたが、答えはメモリマップドファイルであると疑っていましたが、より経験豊富な人の確認が必要でした。
ジャレッド

回答:


10

lsofまた、メモリマッピングされた.soファイルを提供します。これは、技術的には、アプリケーションが制御するファイルハンドルとは異なります。/proc/<pid>/fdは、オープンファイル記述子の測定ポイントです-ただし、proc-manページで言及-マルチスレッドプログラムのメインスレッドが終了した場合、このディレクトリは使用できません。

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lと同じアイテムが表示されls /proc/<pid>/fd | wc -lます。

メモリマップはで利用できます/proc/<pid>/maps


lsofあなたは、ほぼ同じ出力が得られますが、それはまた、cwdrtdおよびtxtファイル記述子。
イアンバムフォース

また、COMMANDとの間のスペースの数はPID異なることに注意してください。スペースを[[:space:]]*に置き換えて、より一般的にします。
イアンバムフォース

私も見lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l ここにいる間、lsofAndroidのシェルでは、( adb shell)をサポートしていません-a-d。だから私は最終的にKvisleのバージョンを使用します。
週末
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.