lsof -c name 和 lsof | 的区别grep ^名称?

Difference between lsof -c name and lsof | grep ^name?

我正在尝试使用 lsof 来确定文件描述符是否存在泄漏。 lsof 的 -c 选项定义为:

如果这是真的那么为什么这两个命令报告不同的数字?

$ lsof -c gunicorn | wc -l
589
$ lsof | grep ^gunicorn | wc -l
29154

默认 lsof 将输出主进程和 threads 带有 TID(线程 ID)但是,如果您使用 -c,只列出进程打开的文件,没有TID。如果您查看两个输出的 headers,您会注意到这一点,'lsof -c' 输出缺少 TID 列。

您可以在 man page 阅读更多关于 TID 的信息。