利用inotify监控文件的方法、装置、电子设备和存储介质与流程

文档序号:32409671发布日期:2022-12-02 21:13阅读:152来源:国知局
利用inotify监控文件的方法、装置、电子设备和存储介质与流程

1.本发明实施例涉及计算机文件监控管理技术领域,尤其涉及一种利用 inotify监控文件的方法、装置、电子设备和存储介质。


背景技术:

2.inotify是linux内核2.6.13版本新增的一个子系统(api),它提供了 一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化 如文件修改、新增、删除等,并可以将相应的事件通知给应用程序。
3.但是inotify对于文件系统监控存在的问题在于,inotify只是监视句柄, 并非文件路径,从而导致一个弊端,如果要监控的文件目前并不存在,则无 法进行监控。或者如果文件被删除,文件对应的inode也不会存在,以后的 监控行为就会失效。
4.现有技术中通常的做法是,启动一个线程,定期轮询检查此文件是不是存 在,然后添加对应的监控策略,如对读、写、属性修改等行为进行监控。这 种做法的弊端在于需要开启线程轮询操作,浪费了系统资源。轮询时间设置 过短会耗费cpu,轮询时间设置过长,则会导致文件被创建发生了一些行为, 会存在监控不到的情况,有一定的时间差,从而无法达到理想的效果。


技术实现要素:

5.基于现有技术的上述情况,本发明实施例的目的在于提供一种利用 inotify监控文件的方法、装置、电子设备和存储介质,可以实现文件的实 时监控。
6.为达到上述目的,根据本发明的一个方面,提供了一种利用inotify监控 文件的方法,该方法在linux内核下的inotify环境中执行,包括:
7.s102、接收下发的文件监控命令,所述文件监控命令中指示待监控的文件 目录;
8.s104、判断待监控的文件目录是否存在;
9.s1042、若存在,则对该待监控的文件目录执行指定的文件监控命令;
10.s1044、若不存在,则寻找该待监控的文件目录的父目录以实现监控。
11.所述步骤s1044中,寻找该待监控的文件目录的父目录以实现监控,包 括:
12.s10441、判断待监控的文件路径的父目录是否存在;若存在,则执行下一 步骤;若不存在,则继续向上一级判断其父目录是否存在,直至寻找到存在 的父目录;
13.s10442、对该父目录执行文件创建监控。
14.所述步骤s10442中,对该父目录执行文件创建监控,包括:
15.s104421、监控该父目录下的文件创建行为,直至所创建的文件目录与待 监控的文件目录相一致;
16.s104422、对该文件目录执行指定的文件监控命令。
17.所述监控该父目录下的文件创建行为,直至所创建的文件目录与待监控的 文件目录相一致,包括:
18.当该父目录下发生文件创建行为时,判断所创建的文件目录是否与待监 控的文件目录的相一致;
19.若与待监控的文件目录的前缀一致,则返回步骤s104421继续监控;
20.若与待监控的文件目录完全一致,则执行步骤s104422,对该文件目录执 行指定的文件监控命令;
21.若与待监控的文件目录不一致,则该方法结束。
22.根据本发明的另一个方面,提供了一种利用inotify监控文件的装置,该 装置设置于linux内核下的inotify环境中,包括:
23.命令接收模块,用于接收下发的文件监控命令,所述文件监控命令中指示 待监控的文件目录;
24.文件目录判断模块,用于判断待监控的文件目录是否存在;
25.文件监控命令执行模块,用于在待监控的文件目录存在时,对该待监控的 文件目录执行指定的文件监控命令;
26.父目录查询模块,用于在待监控的文件目录不存在时,寻找该待监控的文 件目录的父目录以实现监控。
27.进一步的,所述父目录查询模块中,寻找该待监控的文件目录的父目录以 实现监控,包括:
28.判断待监控的文件路径的父目录是否存在;若存在,则执行下一步骤;若 不存在,则继续向上一级判断其父目录是否存在,直至寻找到存在的父目录;
29.对该父目录执行文件创建监控。
30.进一步的,所述父目录查询模块中,对该父目录执行文件创建监控,包括:
31.监控该父目录下的文件创建行为,直至所创建的文件目录与待监控的文件 目录相一致;
32.对该文件目录执行指定的文件监控命令。
33.进一步的,所述父目录查询模块中,监控该父目录下的文件创建行为,直 至所创建的文件目录与待监控的文件目录相一致,包括:
34.当该父目录下发生文件创建行为时,判断所创建的文件目录是否与待监 控的文件目录的相一致;
35.若与待监控的文件目录的前缀一致,则继续监控;
36.若与待监控的文件目录完全一致,则对该文件目录执行指定的文件监控命 令;
37.若与待监控的文件目录不一致,则结束查询。
38.根据本发明的第三个方面,提供了一种电子设备,包括存储器、处理器及 存储在存储器上并可在处理器上运行的可执行指令,所述处理器执行所述程 序时实现如本发明第一个方面所述的方法。
39.根据本发明的第四个方面,提供了一种计算机可读存储介质,其上存储有 计算机可执行指令,所述可执行指令被处理器执行时实现如本发明第一个方 面所述的方法。
40.综上所述,本发明实施例提供了一种利用inotify监控文件的方法、装 置、电子设备和存储介质,该方法在linux内核下的inotify环境中执行, 包括步骤:接收下发的文件监控命令,所述文件监控命令中指示待监控的文 件目录;判断待监控的文件目录是否存
在;若存在,则对该待监控的文件目 录执行指定的文件监控命令;若不存在,则寻找该待监控的文件目录的父目 录以实现监控。本发明实施例提供的技术方案,采用逐级监控父目录的创建 文件和/或目录的机制,解决了现有技术中待监控的文件目录目前并不存在, 而导致无法进行监控的问题;并且通过对父目录下各级目录的监控,实现了 一旦目标文件被创建,则对于该目标的实时监控就能够立刻实施。
附图说明
41.图1是本发明实施例提供的利用inotify监控文件的方法流程图;
42.图2是本发明实施例提供的利用inotify监控文件的装置的构成框图;图3是本发明实施例提供的电子设备的结构示意图。
具体实施方式
43.为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方 式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性 的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构 和技术的描述,以避免不必要地混淆本发明的概念。
44.针对以上现有技术中指出的问题,在进行文件监控时,对于不存在的文件, 本发明实施例采用逐级监控父目录的创建文件和/或目录的机制来达到,一旦 目标文件被创建,就能实现实时监控的目的。即当待监控文件不存在时,对 应的监控命令定然是不生效的,此时采用监控目标文件全路径中的实际存在 的目录的创建行为,来逐级监控目录,当目标文件创建时,获取到的创建行 为监控就会被触发,通过比对目标路径是否一致,即可判断文件要监控的行 为。
45.下面对结合附图对本发明实施例的技术方案进行详细说明。本发明的实 施例中,提供了一种利用inotify监控文件的方法,该方法在linux内核下 的inotify环境中执行,图1中示出了该方法100的流程图,如图1所示, 该方法包括如下步骤:
46.s102、接收下发的文件监控命令,所述文件监控命令中指示待监控的文件 目录。
47.s104、判断待监控的文件目录是否存在。例如,待监控的文件目录的全路 径为:/aaa/bbb/ccc/ddd,而此时这个路径并不存在,即文件监控命令下发 的时刻,此路径“/aaa/bbb/ccc/ddd”对应的inode不存在,也就无法实现 文件监控,即使随后该文件路径被创建出来,针对该文件执行的读写修改等 操作并不能被监控起来。在本发明该实施例中,判断待监控的文件目录是否 存在,对应上述举例,即判断文件目录“/aaa/bbb/ccc/ddd”是否存在。
48.s1042、若存在,则对该待监控的文件目录执行指定的文件监控命令。如 果文件目录“/aaa/bbb/ccc/ddd”存在,则针对该文件目录执行下发的文件 监控命令。
49.s1044、若不存在,则寻找该待监控的文件目录的父目录以实现监控。如 果文件目录“/aaa/bbb/ccc/ddd”不存在,则需要寻找该目录的父目录。
50.该步骤s1044中,寻找该待监控的文件目录的父目录以实现监控,可以按 照以下步骤进行:
51.s10441、判断待监控的文件目录的父目录是否存在;若存在,则执行下一 步骤;若
不存在,则继续向上一级判断其父目录是否存在,直至寻找到存在 的父目录。仍对应以上举例,如果目录“/aaa/bbb/ccc/ddd”不存在,则判 断该目录的父目录“/aaa/bbb/ccc”是否存在,不存在则继续判断该目录的 父目录“/aaa/bbb”是否存在,不存在继续判断该目录的父目录“/aaa”是 否存在,不存在继续判断该目录的父目录“/”是否存在,在linux下,根目 录”/”是一定存在的。
52.s10442、对该父目录执行文件创建监控。查找到存在的父目录之后,对这 个父目录实施监控文件目录创建操作,即当前监控目录下,每次创建都会被 监控起来,判断是否匹配到待监控的文件目录。而该匹配包括两种情况,一 种情况是完全匹配,即创建后的目录与待监控的文件目录完全一致,此时即 可以对该文件目录执行指定的文件监控命令;另一种情况是部分匹配,即与 待监控的文件目录的前缀一致,例如当前目录中只存在“/aaa/bbb”,如果目 录“/aaa/bbb/ccc”被创建,则继续监控该目录“/aaa/bbb/ccc”下的创建 行为,以此类推,直至目录“/aaa/bbb/ccc/ddd”被创建时,就可以收到通 知,对这个目录执行指定行为监控的操作了。
53.具体来说,该创建监控的步骤包括:
54.s104421、监控该父目录下的文件创建行为,直至所创建的文件目录与待 监控的文件目录相一致,包括以下几种情况:
55.若与待监控的文件目录的前缀一致,则返回步骤s104421继续监控;
56.若与待监控的文件目录完全一致,则执行步骤s104422,对该文件目录执 行指定的文件监控命令;
57.若与待监控的文件目录不一致,则该方法结束。
58.s104422、对该文件目录执行指定的文件监控命令。
59.从而通过本发明实施例的上述步骤,实现了实时监控“目前不存在”的文 件的操作,也就是说,目录即使当前不存在,也可以对该目录的创建进行实 时监控,一旦该目录被创建出来,就能够实时进行监控。
60.本发明的实施例,还提供了一种利用inotify监控文件的装置,该装置设 置于linux内核下的inotify环境中,图2中示出了该装置200的结构框图, 该装置包括:
61.命令接收模块201,用于接收下发的文件监控命令,所述文件监控命令中 指示待监控的文件目录;
62.文件目录判断模块202,用于判断待监控的文件目录是否存在;
63.文件监控命令执行模块203,用于在待监控的文件目录存在时,对该待监 控的文件目录执行指定的文件监控命令;
64.父目录查询模块204,用于在待监控的文件目录不存在时,寻找该待监控 的文件目录的父目录以实现监控。
65.上述利用inotify监控文件的装置200中的各个模块的具体功能和操作 已经在上述实施例的利用inotify监控文件的方法中进行了详细介绍,因此, 这里将省略其重复描述。
66.本发明的实施例中,还提供了一种电子设备,包括存储器、处理器及存储 在存储器上并可在处理器上运行的可执行指令,所述处理器执行所述程序时 实现如本发明上述实施例中所述的方法。图3所示为本技术该实施例提供的 电子设备300的结构示意图。如图
3所示,该电子设备300包括:一个或多 个处理器301和存储器302;以及存储在存储器302中的计算机可执行指令, 可执行指令在被处理器301运行时使得处理器301执行如上述实施例的利用 inotify监控文件的方法。处理器301可以是中央处理单元(cpu)或者具有 数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子 设备中的其他组件以执行期望的功能。存储器302可以包括一个或多个计算 机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例 如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取 存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括 只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或 多个计算机程序指令,处理器301可以运行程序指令,以实现上文的本发明 实施例的利用inotify监控文件的方法中的步骤以及/或者其他期望的功能。 在一些实施例中,电子设备300还可以包括:输入装置303和输出装置304, 这些组件通过总线系统和/或其他形式的连接机构(图3中未示出)互连。例 如,在该电子设备是单机设备时,该输入装置303可以是通信网络连接器, 用于从外部的可移动设备接收所采集的输入信号。此外,该输入设备303还 可以包括例如键盘、鼠标、麦克风等。该输出装置304可以向外部输出各种 信息,例如可以包括例如显示器、扬声器、打印机、以及通信网络及其所连 接的远程输出设备等。
67.本发明的实施例中,还提供了一种计算机可读存储介质,其上存储有计算 机程序,所述计算机程序被处理器执行时实现如本发明上述实施例中所述的 方法中的步骤。计算机可读存储介质可以采用一个或多个可读介质的任意组 合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可 以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件, 或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括: 具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器((ram)、 只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式 紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合 适的组合。
68.应当理解的是,本发明实施例中的处理器可以为中央处理单元(centralprocessing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理 器(digital signal processor,dsp)、专用集成电路(application specificintegrated circuit,asic)、现成可编程门阵列(field programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立 硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的 处理器等。
69.综上所述,本发明实施例涉及一种利用inotify监控文件的方法、装置、 电子设备和存储介质,该方法在linux内核下的inotify环境中执行,包括 步骤:接收下发的文件监控命令,所述文件监控命令中指示待监控的文件目 录;判断待监控的文件目录是否存在;若存在,则对该待监控的文件目录执 行指定的文件监控命令;若不存在,则寻找该待监控的文件目录的父目录以 实现监控。本发明实施例提供的技术方案,采用逐级监控父目录的创建文件 和/或目录的机制,解决了现有技术中待监控的文件目录目前并不存在,或者 在监控过程中文件被删除等操作而导致无法进行监控的问题;并且通过对父 目录下各级目录的监控,实现了一旦目标文件被创建,则对于该目标的实时 监控就能够立刻实施。
70.应当理解的是,以上任何实施例的讨论仅为示例性的,并非旨在暗示本发 明的范
围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施 例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序 实现,并存在如上所述的本发明一个或多个实施例的不同方面的许多其它变 化,为了简明它们没有在细节中提供。本发明的上述具体实施方式仅仅用于 示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏 离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应 包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所 附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修 改例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1