Linux 'lsof'コマンドが大きな値を返す

Linux 'lsof'コマンドが大きな値を返す

私はTomcat 9.0.24がインストールされているLinuxサーバーを使用しています。 Tomcatサーバーを停止すると、次の出力が返されます。 'lsof | wc -l 'コマンド

fdmt@fdm-3-136 apache-tomcat-9.0.24]$ lsof | wc -l
1203
fdmt@fdm-3-136 apache-tomcat-9.0.24]$

Tomcatサーバーを起動すると、「lsof」コマンドは多数のオープンファイルを返します。以下の出力セクションを参照してください。

[fdmt@fdm-3-136 apache-tomcat-9.0.24]$ lsof | wc -l
1203
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$ ./bin/startup.sh
Using CATALINA_BASE:   /usr/local/tbx/fdmt/apache-tomcat-9.0.24
Using CATALINA_HOME:   /usr/local/tbx/fdmt/apache-tomcat-9.0.24/
Using CATALINA_TMPDIR: /usr/local/tbx/fdmt/apache-tomcat-9.0.24/temp
Using JRE_HOME:        /usr/local/java/jdk1.8.0_271/jre
Using CLASSPATH:       /usr/local/tbx/fdmt/apache-tomcat- 
9.0.24//bin/bootstrap.jar:/usr/local/tbx/fdmt/apache-tomcat-9.0.24/bin/tomcat-juli.jar
Tomcat started.
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$ lsof | wc -l
30492
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$

この値は徐々に増加しています。私はRed Hat Enterprise Linux Server(VERSION = 7.0)を使用しています。同じ問題を抱えている人はいますか?この問題に対する解決策はありますか?

ベストアンサー1

上記の問題の原因を見つけました@AB答え。両方のLinuxサーバーでtomcatインスタンスを起動した後、「lsof」出力を比較しました。 1 つのサーバーは (元の質問に関して) より大きな値を返しますが、2 番目のサーバーは常に 2000 未満の値を返します。

両方のサーバーに「lsof」の2つのバージョンがあるため、問題が発生します。 (4.82 および 4.87) 最新バージョンにはスレッド関連の結果が含まれています。

lsof-4.82:(TID列なし) ここに画像の説明を入力してください。

lsof-4.87: (TID 列あり) ここに画像の説明を入力してください。

したがって、同じファイルが100回開かれたことを示す100のスレッドがある場合(@ABが述べたように)、これは1つの開かれたファイルとしてのみ計算されます。ただし、| wc -l他のスレッドの重複行数を返します。 (これは実際に間違っています)

おすすめ記事