Linux

如何判斷程序打開了哪些文件?

  • March 26, 2020

我有一個守護程序,我想知道它打開了哪些文件(理想情況下它的 CWD 是什麼)。有什麼shell命令可以告訴我嗎?

我確實喜歡lsof,但我認為對於這樣一個簡單的問題來說這有點過分了。/proc文件系統包含您想知道的所有內容。也許一個例子是最好的:

# ps ax|grep 尾巴
7196 分/4 S+ 0:00 尾 -f /var/log/messages
8773 分 / 0 R + 0:00 grep 尾
# 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
共 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

如您所見,該/proc/$PID目錄包含一個名為“cwd”的符號連結,用於連結程序的 CWD。中列出的打開文件描述符也是如此/proc/$PID/fd

/proc/$PID層次結構包含有關所有正在執行的程序的大量資訊。值得一探究竟!

引用自:https://serverfault.com/questions/47831