本公开涉及数据传输,尤其涉及一种inotify文件监控管理方法及系统、电子设备、存储介质。
背景技术:
1、inotify是一个linux特性,它监控文件系统操作,比如读取、写入和创建。目前通常会采用inotify对文件进行监控管理,但是当短时间内出现大量对文件的并行操作时,尤其是对1gb以上文件的写操作,会产生大量重复的motify事件,从而增加计算文件名哈希值和对比文件名的次数,造成计算资源浪费和效率下降。
技术实现思路
1、有鉴于此,本公开实施例提供了一种inotify文件监控管理方法及系统、电子设备、存储介质,能够减少记录重复的事件信息,从而减少不必要的存储和后续对事件信息的处理开销。
2、第一方面,本公开实施例提供了一种inotify文件监控管理方法,采用如下技术方案:
3、实时监控指定文件,当所述指定文件更新时,获取第一文件标识、第一更新时间和事件信息并存储到内核;
4、基于所述第一文件标识和第一更新时间确定所述事件信息是否为重复信息;
5、若是,则删除所述事件信息;
6、若否,则从所述内核读取所述事件信息。
7、可选地,所述基于所述第一文件标识和第一更新时间确定所述事件信息是否为重复信息,包括:
8、将在先获取的第一文件标识存储在预设的环形队列中成为第二文件标识,直至所述环形队列已满,将所述第一文件标识与所述环形队列中的第二文件标识匹配;
9、若匹配成功,则基于所述第一更新时间和所述第二文件标识对应的第二更新时间确定距离上次从所述内核读取所述指定文件的事件信息的时间是否超过阈值;
10、若是,则表示所述事件信息不是重复信息;
11、若否,则表示所述事件信息是重复信息;
12、若匹配失败,则表示所述事件信息不是重复信息。
13、可选地,所述inotify文件监控管理方法还包括:在新获取的第一文件标识与所述环形队列中的第二文件标识匹配失败之后,
14、采用所述第一更新时间替换掉与所述第二文件标识对应的第二更新时间,将所述环形队列中最后一个第二文件标识删除,将所述第一文件标识添加到所述环形队列中,得到新的第二文件标识和新的第二更新时间;
15、在确定距离上次从所述内核读取所述指定文件的事件信息的时间超过阈值之后,
16、采用所述第一更新时间替换掉与所述第二文件标识对应的第二更新时间,得到新的第二更新时间。
17、可选地,所述从所述内核读取所述事件信息,包括:
18、采用文件描述符从所述内核读取出所述事件信息,解析所述事件信息,得到监控描述符;
19、在第一哈希表中查询到与所述监控描述符对应的第二哈希表;
20、在所述第二哈希表中查询与所述第一文件标识对应的节点;
21、若查询到,则将所述事件信息存储至所述节点中;
22、若查询不到,则以所述第一文件标识为所述第二哈希表的新关键字,创建与新关键字对应的新节点,将所述事件信息存储至新节点中。
23、可选地,所述inotify文件监控管理方法还包括:在所述在第一哈希表中查询到与所述监控描述符对应的第二哈希表之前,
24、在第三哈希表中查询到与所述文件描述符对应的第一哈希表。
25、可选地,所述inotify文件监控管理方法还包括:
26、调用mynotify_init函数,获取所述内核返回的文件描述符,创建所述第三哈希表,将返回的文件描述符作为所述第三哈希表的关键字;
27、调用mynotify_add_watch函数,获取所述内核返回的监控描述符,在所述第三哈希表的节点中创建所述第一哈希表,将返回的监控描述符作为所述第一哈希表的关键字,在所述第一哈希表的节点中创建所述第二哈希表。
28、可选地,所述从所述内核读取所述事件信息,包括:
29、采用mynotify_tools将所述事件信息从所述内核读取到日志文件。
30、第二方面,本公开实施例还提供了一种inotify文件监控管理系统,采用如下技术方案:
31、文件实时监控模块,用于实时监控指定文件,当所述指定文件更新时,获取第一文件标识、第一更新时间和事件信息并存储到内核;
32、重复信息确定模块,用于基于所述第一文件标识和第一更新时间确定所述事件信息是否为重复信息;若是,则执行事件信息删除模块;若否,则执行事件信息读取模块;
33、事件信息删除模块,用于删除所述事件信息;
34、事件信息读取模块,用于从所述内核读取所述事件信息。
35、第三方面,本公开实施例还提供了一种电子设备,采用如下技术方案:
36、所述电子设备包括:
37、至少一个处理器;以及,
38、与所述至少一个处理器通信连接的存储器;其中,
39、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上任一所述的inotify文件监控管理方法。
40、第四方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行以上任一所述的inotify文件监控管理方法。
41、本公开实施例提供的inotify文件监控管理方法,能够实时监控指定文件的更新情况,当指定文件更新时,及时将相关的事件信息存储到内核,通过记录更新文件的第一文件标识和第一更新时间,确定事件信息是否为重复信息,只有当事件信息不是重复信息时,才将事件信息从内核中读取出,根据实际业务需求可以对读取出的事件信息进行相应处理,极大减少重复记录相同的motify事件,从而减少不必要的存储和后续对事件信息的处理开销。总而言之,该方法可以更有效地管理大量文件的更新情况。通过实时监控和过滤重复信息,系统可以提高管理效率,减少不必要的资源消耗。
42、上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
1.一种inotify文件监控管理方法,其特征在于,包括:
2.根据权利要求1所述的inotify文件监控管理方法,其特征在于,所述基于所述第一文件标识和第一更新时间确定所述事件信息是否为重复信息,包括:
3.根据权利要求2所述的inotify文件监控管理方法,其特征在于,还包括:在新获取的第一文件标识与所述环形队列中的第二文件标识匹配失败之后,
4.根据权利要求1所述的inotify文件监控管理方法,其特征在于,所述从所述内核读取所述事件信息,包括:
5.根据权利要求4所述的inotify文件监控管理方法,其特征在于,还包括:在所述在第一哈希表中查询到与所述监控描述符对应的第二哈希表之前,
6.根据权利要求5所述的inotify文件监控管理方法,其特征在于,还包括:
7.根据权利要求1所述的inotify文件监控管理方法,其特征在于,所述从所述内核读取所述事件信息,包括:
8.一种inotify文件监控管理系统,其特征在于,包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行权利要求1-7任一所述的inotify文件监控管理方法。