lsofコマンドを使用せずに開いたファイル記述子を表示する方法

lsofコマンドを使用せずに開いたファイル記述子を表示する方法

こんにちはよく読んだここlsofは、現在開いているファイル記述子の数を取得する正確な方法ではありません。彼は代わりにこのコマンドを使用することを提案しました。

 cat /proc/sys/fs/file-nr

このコマンドはFDの数を表示しますが、上記のコマンドで計算したばかりのオープンファイル記述子のリストを表示するにはどうすればよいですか?

答え1

lsof | wc -lファイル記述子は2つの理由で計算されません。 1つは、ロードされたダイナミックリンクライブラリやフィルタリングする必要がある現在の作業ディレクトリなど、開かれていないファイルの内容を一覧表示することです。もう一つのことは、lsof実行に少し時間がかかるため、実行中に開いたファイルまたは閉じたファイルを見逃す可能性があることです。したがって、リストされたオープンファイルの数はおおよそのものです。ビューを使用すると、特定の/proc/sys/fs/file-nr時点の正確な値を確認できます。

cat /proc/sys/fs/file-nr主にリソースの消耗を確認するために正確な数字が必要な場合にのみ便利です。開いているファイルを一覧表示するには、を呼び出すか、lsof手動トロールなどの同等の方法を使用する必要があります/proc/*/fd

答え2

プロセス情報は、システムによって/ procの下のディレクトリに動的に保存されます。たとえば、PID 1234のプロセスには/proc/1234というディレクトリがあります。

そこにはかなり多くの情報がありますが、今は/proc/1234/に興味があります。FDサブディレクトリ。

注:プロセスとSetUIDプロセスが所有していないファイルを表示または開くには、root権限が必要です。

例:

root@johan-HP-ProBook-6560b-LG654EA-ACQ:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]

root@johan-HP:/proc# cat 2443/fdinfo/2
pos:    1244446
flags:  0102001

また、/procの下の残りのファイルも見てください。システムに関する多くの有用な情報がここにあります。

関連情報