可通过lsof命令或/proc文件系统查看进程打开的文件:首先使用lsof -p PID列出指定进程的所有打开文件,或进入/proc/PID/fd目录执行ls -l查看文件描述符链接;若仅知程序名,可结合pgrep获取PID后调用lsof批量分析,便于排查资源占用与文件锁定问题。

如果您想了解某个进程在Linux系统中打开了哪些文件,可以通过系统自带的工具获取详细信息。这类操作有助于排查资源占用、文件锁定等问题。
本文运行环境:Dell XPS 13,Ubuntu 24.04
一、使用lsof命令查看进程打开的文件
lsof(List Open Files)是一个强大的命令行工具,能够列出当前系统中被进程打开的所有文件,包括普通文件、目录、网络连接、设备等。
1、打开终端,输入 lsof -p 进程ID,将“进程ID”替换为目标进程的实际PID。
2、查看输出结果中的FILE字段,该列显示了进程打开的所有文件路径。
3、若要仅查看特定类型的文件,例如仅显示普通文件,可添加过滤选项:lsof -p PID | grep REG。
二、通过/proc文件系统直接查看
/proc 目录下包含了每个进程的虚拟文件系统信息,其中 fd 子目录保存了该进程打开的所有文件描述符。
1、首先确定目标进程的PID,可通过 ps aux | grep 进程名 获取。
2、进入对应进程的fd目录:cd /proc/PID/fd,将PID替换为实际值。
3、执行 ls -l 命令,列出所有文件描述符及其指向的实际文件路径。
4、符号链接的目标即为进程打开的文件,可通过读取链接信息确认具体文件。
三、结合pgrep与lsof快速定位指定程序的文件
当只知道程序名称而不知道PID时,可以先通过pgrep查找PID,再调用lsof进行分析。
1、使用 pgrep 程序名 获取匹配的进程ID列表。
2、将上一步得到的PID传入lsof命令:lsof -p $(pgrep 程序名)。
3、终端将输出该程序所有进程实例打开的文件清单,便于统一查看。

 路由网
路由网








