如何知道一个进程打开了多less个文件?

我知道我可以使用这个命令

lsof -p xxxx | wc -l 

要知道一个进程打开文件的数量,它的工作原理,但是,它是太低效率。 我有一些服务器进程有太多的套接字文件,wc -l方法永远不会返回结果。 那么,知道一个进程打开多less文件的有效方法是什么?

谢谢。

有一个用于打开文件的proc界面:/ proc / PID / fd /。 它是符号链接的目录。 任何打开的套接字将显示为链接到名为“socket:[INODE NUMBER]”的文件

使用ps -C <progname> -o pid= | wc -l ps -C <progname> -o pid= | wc -l其中prognameps列表中进程的名称。

一些上下文(用例场景)可以为答案提供更好的方向。

lsof的文档描述了它所调用的几个方法,可能会阻塞不必要的时间量。 我会build议浏览lsof手册页的BLOCKS AND TIMEOUTS部分。

您可以尝试以下方法,看看是否提供了理想的结果:

 lsof -bwp $pid | wc -l