首页 文章 精选 留言 我的

精选列表

搜索[分布式文件系统],共10000篇文章
优秀的个人博客,低调大师

学习笔记:python watchdog运维监控文件系统事件实战

情况介绍 由于公司准备做Jenkins的前端自动化发布,但是前端的Node.js环境不统一,所以暂时先搁置,采用Ftp上传文件更新项目,因此想到了可以采用文件监控的形式来进行自动化上传。Python语言的优越性就体现出来了,其中有很多很棒的库,本篇即将用到的就是watchdog库。 watchdog库介绍 watchdog用来监控指定目录文件的变化,例如添加删除文件或目录,修改文件内容、重命名文件或目录等,每种变化都会产生一个事件,且有一个特定的事件类与之对应,然后再通过事件处理类来处理对应的事件,至于怎么样处理事件完全可以自定义,只需继承事件处理类的基类并重写对应实例方法。 实战准备 1.Python环境(系统自带Python2.7.5) 2.安装watchdog库(pip install watchdog) 实例演示 #!/usr/bin/python # -*- coding:UTF-8 -*- import time from watchdog.observers import Observer from watchdog.events import RegexMatchingEventHandler import commands class MyHandler(RegexMatchingEventHandler): def __init__(self, regex_list=[r”.*”]): super(MyHandler, self).__init__(regex_list) def on_created(self, event): if event.is_directory: pass else: print(event.event_type, event.src_path) def on_deleted(self, event): if event.is_directory: pass else: print(event.event_type, event.src_path) def on_modified(self, event): if event.is_directory: pass else: print(event.event_type, event.src_path) node = event.src_path.split(‘/’,3)[2] if node == “cp”: commands.getstatusoutput(‘ansible-playbook /mm/node/tasks/node_cp.yml’) elif node == “genpindao”: commands.getstatusoutput(‘ansible-playbook /mm/node/tasks/node_genpindao.yml’) elif node == “login”: commands.getstatusoutput(‘ansible-playbook /mm/node/tasks/node_login.yml’) elif node == “ucenter”: commands.getstatusoutput(‘ansible-playbook /mm/node/tasks/node_ucenter.yml’) else: commands.getstatusoutput(‘ansible-playbook /mm/node/tasks/node.yml -e node=’+node) def on_moved(self, event): print(“move”, event.src_path, event.dest_path) if __name__ == “__main__”: reges = [r”.*\.c”, r”.*\.h”, r”.*\.cpp”] event_handler = MyHandler(reges) observer = Observer() observer.schedule(event_handler, “/node_ftp/”, recursive=True) observer.start() try: while True: time.sleep(2) except KeyboardInterrupt: observer.stop() observer.join() 实例分析 watchdog主要采用观察者模型。主要有三个角色:observer,event_handler,被监控的文件夹。三者原本是独立的,主要通过observer.schedule函数将三者串起来,意思为observer不断检测调用平台依赖代码对监控文件夹进行变动检测,当发现改变时,通知event_handler处理。 关键点: 1.on_modified方法,是文件有变化触发的函数,上传Ftp目录后就需要调用此方法。 2.event是获取具体文件的路径,文中是为了获取具体的项目名称而进行的目录处理。 3.commands.getstatusoutput方法是调用系统的Shell命令。 4.observer.schedule方法第二个参数就是监控的具体的目录。 Tips:最后可以推荐读者有时间可以阅读一下watchdog的源码,写的清晰易懂而且架构很好。

优秀的个人博客,低调大师

exFAT 文件系统最新驱动程序已进入 Linux 5.7 内核

上个月报道过由三星维护的 exFAT 最新驱动程序将会进入 Linux Kernel 5.7,以替代去年在 Linux Kernel 5.4 引入的旧版 exFAT 驱动。 从邮件列表可以看到,Linus Torvalds 已将总计七千多行代码的新版exFAT 驱动合并进 Linux 5.7 内核。 与新的驱动相比,目前使用的驱动版本属于较老(多年前)的实现。除此之外,新版驱动也是三星在其以百万计的 Android 设备中提供的驱动,三星会继续将其改进贡献到上游 Linux 内核。 总而言之,新版驱动旧的更可靠,功能也更多,同时它将继续接受三星和其他公司贡献的改进。Linux 5.7 首个 RC 版本计划将在本周末发布,稳定版则计划在6月份发布。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册