![如何查找哪些程序正在读取我的文件?](https://linux22.com/image/113237/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E5%93%AA%E4%BA%9B%E7%A8%8B%E5%BA%8F%E6%AD%A3%E5%9C%A8%E8%AF%BB%E5%8F%96%E6%88%91%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个配置文件,想了解哪些可执行文件正在使用它(如果有)。我想知道谁是这个文件的读者。
如果我watch
有一些间隔,我会错过它,因为读取发生得太快了:
watch -d -n 1 "lsof /home/me/my.conf"
如果我尝试执行该程序,我很确定在 的支持下使用它strace
,它会因为引入额外的延迟而失败strace
。
strace -o /tmp/$(date +%s)_myprog.trace myprog
我如何可靠地证明myprog
没有读取该文件?
答案1
观察进程打开哪些文件,或者哪些进程打开文件似乎是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.