查看“进程打开了哪些文件”通常取决于你使用的操作系统。下面按 Linux / macOS 和 Windows 分别说明。
lsof(最常用)lsof -p <PID>
示例:
lsof -p 1234
查看某进程打开的所有类型文件(包括普通文件、socket、管道):
lsof -p 1234
只看普通文件:
lsof -p 1234 | grep REG
/proc(Linux 专用)ls -l /proc/<PID>/fd
示例:
ls -l /proc/1234/fd
说明:
fuser查看哪些进程打开了某个文件:
fuser /var/log/messages
反向查看进程打开的文件也可用:
fuser -v /path/to/file
lsof /path/to/file
Get-Process -Id <PID> | Select-Object -ExpandProperty Modules
更完整地查看打开的文件句柄(需要管理员):
Get-Process -Id <PID> | Get-ChildItem
(部分场景有限)
handle.exe(Sysinternals 工具)下载 Sysinternals Suite:
handle.exe -p <PID>
查看谁打开了某文件:
handle.exe C:\path\to\file
pgrep nginx
lsof -p <nginx_pid>
lsof -i :8080
如果你能告诉我:
我可以给你更精确的命令。