Skip to content
Advertisement

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

I’m trying to figure out whether I have a leak in file descriptors using lsof. The -c option to lsof is defined as:

  • Selects the listing of files for processes executing the command that begins with the characters of c.

If that’s true then why do these two commands report different numbers?

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

Advertisement

Answer

The default lsof will output the the main process and the threads with a TID (Thread ID) However, if you if you filter the output using a -c, only process opened files are listed, without TID. You will notice this if you look at the headers of the two outputs, ´lsof -c´ output is missing the TID column.

You can read more about TID in the man page.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement