有这个需求是因为跑的 docker 容器非常多时,整个系统中打开的文件描述符也会非常多(可以达到几十万个),用 lsof 不带任何参数执行时,是会列出所有打开的文件描述符,这个操作需要比较长时间才能完成。
1
amlee 157 天前
这种东西问 gpt 吧
lsof | grep -v docker |
2
jiucaijiucai OP @amlee 是我描述的不够清楚,我说的排出指的是 lsof 内部处理的时候就直接排除,因为我的目的是为加快 lsof 完成所需的时间,你这种外部 grep 的操作不解决我的问题。
|
3
jiucaijiucai OP @jiucaijiucai #2 有错别字更正一下
是我描述的不够清楚,我说的排除指的是 lsof 内部处理的时候就直接排除,因为我的目的是为了加快 lsof 完成所需的时间,你这种外部 grep 的操作不解决我的问题。 |
4
libook 157 天前
lsof 在 linux 上是读取的/proc 下的内容再进行处理的吧,如果进程数量巨大,读取这个路径下的内容可能就需要比较长的时间?
losf 的-p 可以使用表达式忽略特定的 PID ,比如 lsof -p ^1000 就会忽略 PID 为 1000 的进程,具体可以 man lsof 看一下。 不过不清楚这样会不会让 lsof 直接在读取进程信息的时候就跳过这些进程,还是说只是处理完不展示。如果是前者应该能一定程度上满足你的需求。 |