psutil.Process 和 lsof 命令不一致

问题描述

我编写了一个简单的 Python 脚本,用于监控 Red Hat 系统上的文件描述符数量。

Init? _initData; City get selectedCity { return _initData!.cities .firstWhere((element) => element.id == _initData!.selectedCityId); } Init get initData => _initData!;// home_viewmodel.dart 25 命令相比,我得到两个不同的结果。

分解为核心,脚本执行以下操作:

lsof

当前 import psutil p = psutil.Process(PID) print(p.num_fds()) 报告 60 个打开的文件描述符。 而对于相同的 PID,num_fds() 的结果产生 167

这种差异从何而来?

我的理解是,lsof -p PID | wc -lnum_fds() 都报告相同的文件描述符,包括打开的文件句柄、套接字、管道等。

小背景:某些进程似乎打开套接字和/或文件句柄而不会再次关闭它们。因此,经过较长时间后,进程达到文件描述符的限制并崩溃。此工具旨在监控此过程,以防文件描述符的数量不断增加。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)