根据我的经验,文件描述符为txt
inlsof
输出的文件是可执行文件本身和共享对象。lsof
手册页说它的意思是“程序文本(代码和数据)” 。
在调试问题时,我发现大量数据文件(特别是 ElasticSearch 数据库索引文件)lsof
报告为txt
. 这些绝对不是可执行文件。该过程是 ElasticSearch 本身,它是一个 java 过程,如果这有助于为某人指明正确的方向。
我想了解这个过程是如何打开和使用这些文件以这种方式报告的。我试图了解一些内存利用率,并且我怀疑这些打开的文件与我以某种方式看到的某些指标有关。
该系统是 Solaris 10 x86。
在 Solaris 上,映射到进程内存空间的所有内容都将由
lsof
as列出txt
,无论是启动的可执行文件,还是 ld.so 映射的可执行共享对象,或应用程序直接映射的任何数据文件。在 Linux 上,只有启动的可执行文件将被列为
txt
,映射到内存空间的所有其他内容都将显示为mem
(可执行共享对象和数据文件)。