如何查找哪些程序正在读取我的文件?

如何查找哪些程序正在读取我的文件?

我有一个配置文件,想了解哪些可执行文件正在使用它(如果有)。我想知道谁是这个文件的读者。

如果我watch有一些间隔,我会错过它,因为读取发生得太快了:

watch -d -n 1 "lsof /home/me/my.conf"

如果我尝试执行该程序,我很确定在 的支持下使用它strace,它会因为引入额外的延迟而失败strace

strace -o /tmp/$(date +%s)_myprog.trace myprog

我如何可靠地证明myprog没有读取该文件?

答案1

观察进程打开哪些文件,或者哪些进程打开文件似乎是sysdig.

来自sysdig 示例页面

基本 opensnoop:监听文件在发生时打开

sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

观察名为 my.conf 的所有文件的 I/O 活动

sysdig -A -c echo_fds "fd.filename=my.conf"

福姆系统挖掘人

名称 sysdig - 权威的系统和进程故障排除工具

概要 sysdig [选项]... [过滤器]

描述。

   sysdig is a tool for  system  troubleshooting,  analysis  and  explo‐
   ration.   It  can  be used to capture, filter and decode system calls
   and other OS events.
   sysdig can be both used to inspect live systems, or to generate trace
   files that can be analyzed at a later stage.

   sysdig  includes  a powerul filtering language, has customizable out‐
   put, and can be extended through Lua scripts, called chisels.

相关内容