如何在Linux上查找哪些进程写入了一个文件

4

有没有办法找出先前写入给定文件的进程是哪个。 我有一个问题,多个进程似乎在写入一个文件。 我知道其中一个进程,但不确定谁还在写入该文件。 我使用的是linux / ubuntu操作系统。 操作系统是否会记录有关已写入指定文件的进程的日志?


2
就我所知,fuser并没有什么用处,因为它只告诉你当前写入文件的进程。 - doon
系统默认没有这样的日志。您可能需要自己创建这样的日志。请参阅我的建议答案。 - Huygens
2个回答

5

创建一个小的监控进程,定期记录当前正在访问文件的用户。

您可以使用fuser编写一个小脚本。这是一个快速示例(需要改进):

#!/bin/bash

log=~/file-access.log

while true
do
  fuser your_file >> $log
  sleep 0.2s
done

但是你需要运气好一点,因为写入到这个文件的进程需要足够长的时间才有可能用fuser检测到它。


1

不,系统默认没有任何功能来跟踪事后哪些进程写入了文件。

如果您可以随时重现问题,inotify或类似工具可以帮助您实时监控谁在写入该文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接