识别在linux上打开特定进程的文件

时间:2010-04-21 09:01:42

标签: linux process pid

我需要一个脚本来识别在linux上打开特定进程的文件

识别fd:

>cd /proc/<PID>/fd; ls |wc –l  

我希望看到一个数字列表,它是进程中使用的文件描述符号码列表。请告诉我如何查看该过程中使用的所有文件。 感谢。

5 个答案:

答案 0 :(得分:19)

您可能想要使用的命令是lsof。这比挖掘/proc更好,因为命令是一种更清晰,更稳定的方式来获取系统信息。

lsof -p pid

但是,如果您对/proc内容感兴趣,您可能会注意到文件/proc/<pid>/fd/x是与其关联的文件的符号链接。您可以使用readlink命令读取符号链接值。例如,这表明终端stdin绑定到:

$ readlink /proc/self/fd/0
/dev/pts/43

或者,获取某些进程的所有文件,

ls /proc/<pid>/fd/* | xargs -L 1 readlink

答案 1 :(得分:8)

虽然lsof很好,但您可以这样做:

ls -l /proc/pidoftheproces/fd

答案 2 :(得分:5)

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

答案 3 :(得分:2)

您需要lsof。获取打开foo.txt的应用程序的PID:

lsof | grep foo.txt | awk -F\  '{print $2}'

或Macmede说的相反(由进程打开的列表文件)。

答案 4 :(得分:1)

lsof | grep processName
相关问题