需求:系统分为好几个模块,各有1个server,有一个全局配置文件,用来记录各个模块都需要访问的全局变量,如/etc/agent/global.cfg。要求,任何一个模块修改配置时要告知到所有模块。
基本思路有2:
- 修改配置的模块主动进行notify,告知其他模块配置变化
- 其他模块在使用相关配置时,主动查询配置文件
由于配置文件的修改并不频繁,linux提供了inotify机制,可以注册对应文件事件,如文件修改等,在事件发生后调用我们的callback,做对应的处理。
Python有pyinotify库可直接调用。
--IN_ACCESS,即文件被访问
--IN_MODIFY,文件被write
--IN_ATTRIB,文件属性被修改,如chmod、chown、touch等
--IN_CLOSE_WRITE,文件修改后close
--IN_CLOSE_NOWRITE,文件未修改被close
--IN_OPEN,文件被open
--IN_