我想拦截Linux服务器中的每个磁盘写入操作。详细地说,我想在每次磁盘写入操作发生的时候捕获每个磁盘写入操作,并能够确定哪个进程发起了调用,它正在尝试写入的位置等等。为了简单起见,现在我只专注于ext3。我意识到auditfs和其他的“观察者”,一旦手术发生就会让你知道。如前所述,我想拦截它,并能够检索有关操作的所有信息(过程信息,目标位置,正在写入的内容)。如果存在中断/回调机制(例如,通过进程,进程组或会话 - pid,pgid,sid接收任何写入操作的通知),则会更好。在Linux中拦截磁盘写入
感谢
你想拦截' write()'系统调用,还是截取数据实际发送到磁盘?因为后者可能因缓冲而延迟。而Unix使用共享缓冲区缓存,所以多个进程可能是“负责任的”。如果进程使用内存映射,则不会有'write()'。 – Barmar
感谢Barmar的快速响应。我想在其他地方复制写入操作(也可能是删除操作)。我希望在磁盘写入过程中拦截可能是正确的。我不明白'多个过程可能是负责任的'。我对执行写入的高级过程感兴趣。请建议我最好的选择。谢谢。 – user630286
两个进程在同一个文件上都使用'mmap()'。它们通过这个共享内存对文件的同一页面进行一些更新。最终页面刷新到磁盘 - 应该返回哪些进程信息? – Barmar