Linux
如何判斷程序打開了哪些文件?
我有一個守護程序,我想知道它打開了哪些文件(理想情況下它的 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
層次結構包含有關所有正在執行的程序的大量資訊。值得一探究竟!