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

ala*_*ine 13 linux pid process

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

识别fd:

>cd /proc/<PID>/fd; ls |wc –l  
Run Code Online (Sandbox Code Playgroud)

我期望看到一个数字列表,这是在过程中使用的文件描述符号码列表.请告诉我如何查看该过程中使用的所有文件.谢谢.

P S*_*ved 19

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

lsof -p pid
Run Code Online (Sandbox Code Playgroud)

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

$ readlink /proc/self/fd/0
/dev/pts/43
Run Code Online (Sandbox Code Playgroud)

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

ls /proc/<pid>/fd/* | xargs -L 1 readlink
Run Code Online (Sandbox Code Playgroud)


nos*_*nos 9

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

ls -l /proc/pidoftheproces/fd
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 5

lsof -p <pid number here> | wc -l
Run Code Online (Sandbox Code Playgroud)

如果你没有lsof,你可以使用just来做大致相同的事情 /proc

例如

$ pid=1825
$ ls -1 /proc/$pid/fd/*
$ awk '!/\[/&&$6{_[$6]++}END{for(i in _)print i}' /proc/$pid/maps
Run Code Online (Sandbox Code Playgroud)