こんにちは、私はここでlsofは現在開いているファイル記述子の数を取得する正確な方法ではないことを読みました。彼は代わりにこのコマンドを使用することをお勧めしました
cat /proc/sys/fs/file-nr
このコマンドはFDの数を表示しますが、上記のコマンドでカウントしたオープンファイル記述子のリストをどのように表示しますか?
こんにちは、私はここでlsofは現在開いているファイル記述子の数を取得する正確な方法ではないことを読みました。彼は代わりにこのコマンドを使用することをお勧めしました
cat /proc/sys/fs/file-nr
このコマンドはFDの数を表示しますが、上記のコマンドでカウントしたオープンファイル記述子のリストをどのように表示しますか?
回答:
lsof | wc -l
ファイル記述子をカウントしない2つの理由があります。1つは、ロードされた動的にリンクされたライブラリや現在の作業ディレクトリなど、開いていないファイルを一覧表示することです。それらを除外する必要があります。もう1つは、lsof
実行に時間がかかるため、実行中に開いたり閉じたりしたファイルを見逃す可能性があることです。したがって、リストされている開いているファイルの数は概算です。を見ると/proc/sys/fs/file-nr
、特定の時点での正確な値がわかります。
cat /proc/sys/fs/file-nr
主にリソースの枯渇をチェックするために正確な数値が必要な場合にのみ役立ちます。開いているファイルを一覧表示する場合は、を呼び出すlsof
か、/proc/*/fd
手動でトロールするなどの同等の方法を使用する必要があります。
/proc/*/fd
ディレクトリには、開いているファイルへのシンボリックリンクが含まれています。目視検査には、を使用しますls -l
。自動処理の場合readlink
、リンクターゲットの抽出に使用します。
setrlimit
(ulimit
シェルコマンドの基になるシステムコール)のすべての設定はプロセスごとです。それらは、呼び出しを行うプロセス(および間接的に、後で分岐するプロセス)にのみ影響します。
プロセス情報は、システムによって/ 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の下にある残りのファイルも見てください。システムからの多くの有用な情報がここにあります。