2017-11-20 344 views
-1

"lsof"コマンドが出力を出す時間がかかっているため、オープンファイルのリストを見つけるにはLinux(SUSE & RHEL)のコマンドが必要です。 "lsof -n"多くの時間。私たちは "lsof"の代替コマンドを持っていますか?Linuxの "lsof"コマンドの代わりに

おかげで、 Sanghamitra

+3

どのように 'lsof'コマンドを実行していますか? – dlmeetei

答えて

1

あなたはprocファイルシステムからファイルを開いて読むことができます。

for p in /proc/{0..9}*; do 
    i=$(basename "$p") 
    for f in "$p"/fd/*; do 
    l=$(readlink -e "$f") 
    if [ "$l" ]; then 
     echo "$i: $l" 
    fi 
    done 
done | sort -u | sort -n 
1

つまり、lsof -nを使用します。


lsofそれは/dev

  • 内のすべてのデバイスをスキャンするために多くの時間を使用しています

    1. ので、それはすべてのリバースDNSクエリを取得するためにも多くの時間を使って多くのことを待って見つかったネットワークソケットのエンドポイント。彼らの多くは有効なrevdns(0.0.0.0のような)を持っていません、そして、それらのために質問する結果はタイムアウトします。
    2. これは、イベント指向のアプリケーションではなく、シングルスレッドとして動作します。

    -nを使用して、DNS解決部分を無効にすることで、大幅に加速することができます。

    とにかく、@cevingの答えを拡張すると、開いているファイルディスクリプタのリストだけでなく、プロセスのアドレススペースにマップされたファイルのリスト(cat /proc/<pid>/map)も見ることができます。あなたは驚くほどゆっくりと実行中のプロセスを持っている場合


    通常、

    strace -f -tt -o sux <your command line> 
    

    をファイルにダンプしますsuxカーネルは、タイムスタンプと、プロセスが何をしたかを呼び出します。本質的には、と正確にはどのようなプロセスが行われたのかを追跡することができます。

  • +0

    恐ろしい返事です。私はこれらのすべてのオプションを試してみましょう。すべてのあなたの提案に感謝します。 –

    関連する問題