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.