【问题标题】:how to know which processes accessed a file?如何知道哪些进程访问了文件?
【发布时间】: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


    【解决方案1】:

    没有工具可以做到这一点。要查看当前哪个进程打开了文件,可以使用fuser 和lsof。

    要获取更改历史记录,您需要运行一个进程来监视文件系统的更改。您可以使用inotify service 来构建它。

    相关:

    【讨论】:

      【解决方案2】:

      linux审计系统可以帮助你,并会提供详细的信息:

      这是 Redhat 网站上的一些 documentation,但应该适用于其他 linux 变体。大多数发行版都有审计系统,但可能是可选安装。

      假设审计子系统已经在运行,您可以添加一个规则来监视示例文件的读取访问,如下所示:

      auditctl -w /etc/AAA -p r -k mywatch
      

      然后你可以用命令查看结果:

      ausearch -k mywatch
      

      或查看 audit.log 文件(在某些系统上位于 /var/log/audit 中)

      【讨论】:

        【解决方案3】:

        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
        

        【讨论】:

        猜你喜欢
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多