我在我的一台 Linux 服务器上运行 lsof 来检查/tmp/incoming_data.txt
ext3 系统中的一个文件 ( ) 是否被其他程序打开。我的服务器上有很多 TCP 连接。奇怪的是“sudo lsof”的执行大约需要两分钟才能完成,并且在那两分钟内它使用了 99.x% 的 CPU。
我使用的命令是sudo lsof /tmp/incoming_data.txt
. 我试过“ fuser ”,它占用了大约相同数量的 CPU 和执行时间。有什么我可以解决这个问题的吗?
我在我的一台 Linux 服务器上运行 lsof 来检查/tmp/incoming_data.txt
ext3 系统中的一个文件 ( ) 是否被其他程序打开。我的服务器上有很多 TCP 连接。奇怪的是“sudo lsof”的执行大约需要两分钟才能完成,并且在那两分钟内它使用了 99.x% 的 CPU。
我使用的命令是sudo lsof /tmp/incoming_data.txt
. 我试过“ fuser ”,它占用了大约相同数量的 CPU 和执行时间。有什么我可以解决这个问题的吗?
传递
-n
选项以跳过解析 IP 连接的 DNS 名称。这几乎可以肯定是任何放缓中最大的部分。如果您确定可以跳过打开的 TCP 或 UDP 连接,因为您提到它们太多,您可以使用 lsof 的方言特定选项
-X
。阅读 lsof 的手册页并搜索“-X”以获取详细信息。
我发现这个小 NPM 包在加速 lsof 文件方面做得非常好:https ://www.npmjs.com/package/lsof-mac-fast 。
我创建了一个包装脚本来使用它:
这是我的脚本:
重复间隔可能非常低,例如 10 ms 似乎可以正常工作。