我需要一個腳本來標識打開的文件在Linux上識別文件打開一個特定的進程在Linux上
一個特定的程序,以確定FD:
>cd /proc/<PID>/fd; ls |wc –l
我希望看到號碼列表,其是過程中使用的文件描述符編號的列表。請告訴我如何查看在該過程中使用的所有文件。 謝謝。
我需要一個腳本來標識打開的文件在Linux上識別文件打開一個特定的進程在Linux上
一個特定的程序,以確定FD:
>cd /proc/<PID>/fd; ls |wc –l
我希望看到號碼列表,其是過程中使用的文件描述符編號的列表。請告訴我如何查看在該過程中使用的所有文件。 謝謝。
lsof | grep processName
您需要lsof。爲了讓開幕foo.txt的應用程序的PID:
lsof | grep foo.txt | awk -F\ '{print $2}'
還是什麼Macmede說做相反的(由一個進程打開的列表文件)。
lsof -p <pid number here> | wc -l
如果你沒有lsof的,你可以用做大致相同只是/proc
如
$ pid=1825
$ ls -1 /proc/$pid/fd/*
$ awk '!/\[/&&$6{_[$6]++}END{for(i in _)print i}' /proc/$pid/maps
你可能想使用的命令是lsof
。這比在/proc
中挖掘更好,因爲該命令是獲取系統信息的更明確和更穩定的方式。
lsof -p pid
不過,如果你有興趣/proc
東西,你可能會注意到,文件/proc/<pid>/fd/x
是一個符號鏈接它與相關的文件。您可以使用readlink
命令讀取符號鏈接值。例如,這說明終端標準輸入勢必:
$ readlink /proc/self/fd/0
/dev/pts/43
,或者得到一些過程中的所有文件,
ls /proc/<pid>/fd/* | xargs -L 1 readlink
雖然lsof的是好的,你可以這樣做:
ls -l /proc/pidoftheproces/fd
哦 謝謝!讓我試試 – aladine 2010-04-21 09:07:56
這將使用文件列出進程。我想他想要一個進程使用的文件...所以輸入進程名稱而不是文件名... – Macmade 2010-04-21 09:11:25
正確,我更新了答案。 – 2010-04-21 09:14:53