【发布时间】:2014-07-24 09:45:11
【问题描述】:
我的操作系统是 linux。
我有一个位于 /etc 的文件,
它的完整路径如 /etc/AAA。
任何工具或命令都可以告诉我文件在一段时间内被哪些进程访问。 例如 凌晨 1:10,进程 A 写入 /etc/AAA 凌晨 3:50,进程 B 读取 /etc/AAA
我需要知道访问 /et/AAA 的所有进程 ID
谢谢。
【问题讨论】:
标签: linux file process monitor
我的操作系统是 linux。
我有一个位于 /etc 的文件,
它的完整路径如 /etc/AAA。
任何工具或命令都可以告诉我文件在一段时间内被哪些进程访问。 例如 凌晨 1:10,进程 A 写入 /etc/AAA 凌晨 3:50,进程 B 读取 /etc/AAA
我需要知道访问 /et/AAA 的所有进程 ID
谢谢。
【问题讨论】:
标签: linux file process monitor
没有工具可以做到这一点。要查看当前哪个进程打开了文件,可以使用fuser 和lsof。
要获取更改历史记录,您需要运行一个进程来监视文件系统的更改。您可以使用inotify service 来构建它。
相关:
【讨论】:
linux审计系统可以帮助你,并会提供详细的信息:
这是 Redhat 网站上的一些 documentation,但应该适用于其他 linux 变体。大多数发行版都有审计系统,但可能是可选安装。
假设审计子系统已经在运行,您可以添加一个规则来监视示例文件的读取访问,如下所示:
auditctl -w /etc/AAA -p r -k mywatch
然后你可以用命令查看结果:
ausearch -k mywatch
或查看 audit.log 文件(在某些系统上位于 /var/log/audit 中)
【讨论】:
stat 为您提供了一些信息;
$ stat test.txt
File: `test.txt'
Size: 166 Blocks: 1 IO Block: 65536 regular file
Device: 6a81ccb1h/1786891441d Inode: 6755399442667785 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ PC_01) Gid: ( 513/ None)
Access: 2014-07-16 16:03:18.208462800 +0200
Modify: 2014-07-16 16:03:18.209462900 +0200
Change: 2014-07-16 16:03:18.209462900 +0200
Birth: 2014-07-16 16:03:18.208462800 +0200
【讨论】:
stat 不会显示哪个进程触及了文件。