我正在开发一个监视进程资源并在 Linux 中定期报告的应用程序,但我在提取每个进程的打开文件数时遇到了问题。
如果我取出所有文件并根据它们的 PID 对它们进行分组并计算它们,这需要相当长的时间。
如何获取 Linux 中每个进程的打开文件数?
原文由 Aladdin 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试这个:
ps aux | sed 1d | awk '{print "fd_count=$(lsof -p " $2 " | wc -l) && echo " $2 " $fd_count"}' | xargs -I {} bash -c {}
原文由 Cokorda Raka 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答794 阅读✓ 已解决
2 回答3.2k 阅读
查看
/proc/
文件系统:要对所有进程执行此操作,请使用以下命令:
作为单线(通过附加
| grep -v "0 FDs"
过滤):作为包含命令名称的单行代码,按文件描述符计数降序排序(通过附加
| head -10
来限制结果):归功于 @Boban 的这个附录:
下面是另一种列出开放fds最多的前十进程的方法,可能可读性较差,所以我就不放在前面了: