实时监控Linux上打开的进程文件

实时监控Linux上打开的进程文件

可以使用以下命令找到进程打开的文件:

ls -l /proc/PID/fd

有什么方法可以以更具互动性的方式完成,例如tail,每 x 秒自动刷新一次?

答案1

尝试一下watch命令:

watch -n 10 ls -l /proc/$$/fd

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

while:
do
 ls -l /proc/$$/fd
 sleep 10
done

watch在里面procps基于 Debian 的系统上的软件包和procps基于 Red Hat 的系统上的 RPM。

答案2

如果你想查看正在打开的每个文件,你可以使用 进行过滤strace。例如:

strace -p _pid_of_app_ -e trace=open,close

答案3

您可以将lsof和结合起来watch

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

答案4

我创建了一个 bash 文件,将命令的输出写入文件。文件是根据当前日期生成的。这里我计算了打开的文件数。

#!/bin/bash
while :
do
 cd /proc/<PID>/fd
 today=$(date +"%m-%d-%Y")
 filename="/tmp/${today}.txt"
 ls -l | wc -l >> "${filename}"
 sleep 10
done

相关内容