I have a daemon process and I want to know what files it has open (and ideally what its CWD is). Is there any shell command that can tell me that?

5 Answers 5


I do love lsof, but I think it's overkill for a simple question like this. The /proc filesystem contains everything you want to know. Perhaps an example would be best:

# ps ax|grep tail
 7196 pts/4    S+     0:00 tail -f /var/log/messages
 8773 pts/0    R+     0:00 grep tail
# ls -l /proc/7196/cwd
lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte
# ls -l /proc/7196/fd
total 0
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4
lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages

So as you can see, the /proc/$PID directory contains a symlink called "cwd" that links the the CWD of the process. The same is true for the open filedescriptors listed in /proc/$PID/fd.

The /proc/$PID hierarchy contains a wealth of information about all running processes. Worth poking around in!

  • lsof is easier.
    – hookenz
    Mar 22, 2012 at 2:17

If you have the command lsof available [whcih most *nix flavors do] you would use:

lsof -p NNN

to list files open by process NNN. I haven't used BSD in a while but from memory fuser is a close parallel to lsof.

I'm not sure of a command to find the cwd of a process but on Linux cwd is symlinked into the /proc directory of the process ie. /proc/NNN/cwd.

  • 1
    On Ubuntu, lsof comes with the lsof package. I don't think that it's installed by default.
    – innaM
    Jul 30, 2009 at 7:55

if you know the processes PID, you can just issue an

lsof | grep YOURPID

Quick and easy to remember.


lsof -c yourprogramexecutable
  • 3
    What's wrong with lsof -p PID?
    – innaM
    Jul 30, 2009 at 7:56
  • Nothing. It's only that the grep pipe is burned into my brain for at least 15 years now :)
    – Sven
    Jul 30, 2009 at 9:29

Try lsof if it's installed on your system



This may also help, using proc file-system you can do:

readlink proc_sample/proc/<YOUR_PID>/fd/*

Don't forget to replace <YOUR_PID> with the desired process id.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.