查找读写指定文件的进程

今天遇到一个问题,需要知道读写某个特定文件的进程是哪个。开始找到inotify,发现它确实能监控文件的读写等一系列事件,但它只能告知制造这些事件的用户id,而没有进程id。这时候想到lsof, 它能列出当前所有被打开的文件及打开进程的信息。那么在收到inotify事件通知后,执行lsof不就能知道进程信息了,抱着这个想法写了个python脚本,结果发现屁用没有。因为大多数修改文件的过程,都是修改完后立刻关闭文件的,收到inotify事件通知再去执行lsof几乎得不到任何有用信息。

正在陷入困境之际,网上找到了答案。只要执行如下命令:

/sbin/auditctl -w 文件路径 -p war

等到文件改变后,执行:
/sbin/ausearch -f 文件路径

就能知道到底是哪个进程修改了这个文件。ausearch的输出信息很多,可以用more或倒到一个文件里慢慢看。
看完后执行
/sbin/auditctl -D

以删除所有监控规则。

在CENTOS 6.4 测试通过。

 

categories IT

一条评论

  • By 匿名, 十二月 23, 2013 @ 3:51 下午

    执行完这个 /sbin/ausearch -f 文件路径 是“ “

Other Links to this Post

RSS feed for comments on this post. TrackBack URI

Leave a comment

  • :em48:
  • :em32:
  • :em34:
  • :em14:
  • :em72:
  • :em37:
  • :em53:
  • :em56:
  • :em25:
  • :em39:
  • :em04:
  • :em13:
  • :em38:
  • :em20:
  • :em41:
  • :em31:
  • :em16:
  • :em45:
  • :em21:
  • :em43:
  • :em12:
  • :em71:
  • :em11:
  • :em23:
  • :em46:
  • :em66:
  • :em47:
  • :em02:
  • :em49:
  • :em54:
  • :em27:
  • :em36:
  • :em35:
  • :em15:
  • :em05:
  • :em26:
  • :em44:
  • :em06:
  • :em64:
  • :em01:
  • :em55:
  • :em70:
  • :em28:
  • :em40:
  • :em67:
  • :em18:
  • :em63:
  • :em09:
  • :em10:
  • :em62:
  • :em69:
  • :em03:
  • :em08:
  • :em33:
  • :em42:
  • :em52:
  • :em51:
  • :em68:
  • :em30:
  • :em65:
  • :em59:
  • :em29:
  • :em07:
  • :em50:
  • :em17:
  • :em24:
  • :em57:
  • :em22:
  • :em19:
  • :em60:
  • :em61:
  • :em58: