Linux 的 lsof 命令能排除 docker 容器进程打开的文件吗?

144 天前
 jiucaijiucai

有这个需求是因为跑的 docker 容器非常多时,整个系统中打开的文件描述符也会非常多(可以达到几十万个),用 lsof 不带任何参数执行时,是会列出所有打开的文件描述符,这个操作需要比较长时间才能完成。

1144 次点击
所在节点    Linux
4 条回复
amlee
144 天前
这种东西问 gpt 吧

lsof | grep -v docker
jiucaijiucai
144 天前
@amlee 是我描述的不够清楚,我说的排出指的是 lsof 内部处理的时候就直接排除,因为我的目的是为加快 lsof 完成所需的时间,你这种外部 grep 的操作不解决我的问题。
jiucaijiucai
144 天前
@jiucaijiucai #2 有错别字更正一下

是我描述的不够清楚,我说的排除指的是 lsof 内部处理的时候就直接排除,因为我的目的是为了加快 lsof 完成所需的时间,你这种外部 grep 的操作不解决我的问题。
libook
144 天前
lsof 在 linux 上是读取的/proc 下的内容再进行处理的吧,如果进程数量巨大,读取这个路径下的内容可能就需要比较长的时间?

losf 的-p 可以使用表达式忽略特定的 PID ,比如 lsof -p ^1000 就会忽略 PID 为 1000 的进程,具体可以 man lsof 看一下。
不过不清楚这样会不会让 lsof 直接在读取进程信息的时候就跳过这些进程,还是说只是处理完不展示。如果是前者应该能一定程度上满足你的需求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX