文件系统VFS层监控某文件被哪些进程操作的方法

在系统很大的时候,可能会有很多个模块操作某个文件,有时候文件突然被删掉了或者被创建了,大家也不知道是哪个模块做的,因为整个操作过程很快,等我们看到文件被删掉了,对应的模块已经close掉了这个文件句柄。这个时候就希望在内核里面做一个监控,看看是个模块操作了文件。

       这里提供一个方法,就是在VFS层对某个文件或者目录做监控,把操作的进程打印出来。

比如像查看哪些进程操作了文件miguaddata.txt,可以根据文件名先定义一个宏定义

#define FILE_MONITOR "miguaddata.txt"

然后到相应的open函数的对应地方找到vfs接口传递下来的文件名,用strnsr的函数来做过滤,如下

函数一:struct file *do_filp_open(int dfd, struct filename *pathname,const struct open_flags *op):    

    if( pathname->name&& strnstr(pathname->name,FILE_MONITOR,strlen(pathname->name))){

       printk(KERN_ALERT "___%d > %s %s process[%s %d] parent<%s:%d>\n",__LINE__,__FUNCTION__,pathname->name,current->comm,current->pid,current->parent->comm,current->parent->pid);

    }            

函数二:static long do_rmdir(int dfd, const c

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值