Linux / UNIX: List Open Files for Process

Posted on in Categories , , , , , last updated March 5, 2008

Q. How do I list all open files for a Linux or UNIX process using command line options?

A. Both Linux and UNIX like operating systems comes with various utilities to find out open files associated with process.

Task: UNIX List Open Files For Process

First use ps command to get PID of process, enter:
$ ps -aef | grep {process-name}
$ ps -aef | grep httpd

Next pass this PID to pfiles command,
$ pfiles {PID}
$ pfile 3533

Task: Linux List Open Files For Process

First you need to find out PID of process. Simply use any one of the following command to obtain process id:
# ps aux | grep {program-name}
OR
$ ps -C {program-name} -o pid=
For example, find out PID of firefox web-browser, enter:
$ ps -C firefox -o pid=
Output:

 7857

To list opne files for firefox process, enter:
$ ls -l /proc/7857/fd
Sample output:

total 0
lr-x------ 1 vivek vivek 64 2008-03-05 22:31 0 -> /dev/null
l-wx------ 1 vivek vivek 64 2008-03-05 22:31 1 -> pipe:[18371]
lr-x------ 1 vivek vivek 64 2008-03-05 22:31 10 -> /usr/lib/firefox/firefox
l-wx------ 1 vivek vivek 64 2008-03-05 22:31 2 -> pipe:[18371]

lsof command

lsof command list open files under all Linux distributions or UNIX like operating system. Type the following command to list open file for process ID 351:
$ lsof -p 351

21 comment

  1. For the single line lovers, here is another:

    lsof -p `pgrep firefox-bin`

    pgrep could be not automatically installed by your distro.

  2. Hi,,,, lsof is not giving the results in my Linux server,
    whenever i give the command ” lsof -u OSuser|wc -l ” its gives error saying “command not found”

  3. How can i see all files that opened by a specific pid and all it’s threads.
    My C++ program opens 200 threads per process but i do not see all file descriptors that were opened by each thread.

  4. Hi there,

    Is it possible to do it in the opposite direction. How to know which process created a particular file?

    I’ve just discovered your site, thanks a lot for sharing so much good stuff.

    Javier.

  5. javier:
    >>> Is it possible to do it in the opposite direction. How to know which process created a particular file?

    if the file is open try
    fuser

  6. fuser -m (or . in case file is not accessible)
    will return all processes that have locked this file (or directory in case file is not accessible)
    then proceed as suggested with lsof -p | grep

  7. How could you get the files opened by a process using kernel modules?
    I mean, what would be the corespondent for ps aux | grep ?

    10x

  8. it doesn’t works when i try to do ‘lsof -p ‘ and got message as below
    /opt/csw/bin/lsof -p 22982
    lsof: can’t stat(/devices): No such file or directory

  9. I am using weblogic osb in red hat linux system,and the command pfiles is not found.
    My aim is to find File Descriptor’s total capacity

    command which i am running is:
    procfiles | grep rlimit

    Please help.

  10. Yeah… lsof comes from something that used to be called ‘ofiles’ I think…. Hit nothing searching for ‘ofiles’ so I’m including this comment ! ;)

Leave a Comment