监控linux上打开的进程文件(实时)

Fra*_*kie 12 files monitoring performance-monitoring process

XYZ进程打开的文件可以通过命令找到

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

无论如何,是否可以以更具交互性的方式完成,例如tail每 x 秒自动刷新一次?

dav*_*vey 17

试试watch命令:

watch -n 10 ls -l /proc/$$/fd
Run Code Online (Sandbox Code Playgroud)

手表不错。

您可以使用老式的 while 循环:

while :
do
 ls -l /proc/$$/fd
 sleep 10
done
Run Code Online (Sandbox Code Playgroud)

watch位于基于 debian 的系统上的procps包中,以及RedHat 派生系统上的procps rpm。


Evg*_*eny 12

如果您想在打开时查看每个文件,您可以使用strace. 例如:

strace -p _pid_of_app_ -e trace=open,close
Run Code Online (Sandbox Code Playgroud)

  • 这_真的_是最好的答案。如果您尝试调试在 shell 中运行的某些东西,我建议使用标志 `-y` 和 `-f`。只需传入 shell PID,`-f` 将跟随任何分支。 (5认同)

Chr*_*ian 6

你可以结合lsofwatch

例如,watch "lsof -p 1234"每 2 秒就会为您提供 pid 1234 的所有打开文件的列表。您可以更改一些参数来满足您的需求。

  • 很好,不知道“lsof”的“-r”选项。因此我使用“watch”每两秒执行一次“lsof”。 (2认同)