精华内容
下载资源
问答
  • python watchdog是一个跨平台的,可用于监控某个目录下资源(文件和文件夹)变化的库。pyinotify功能和watchdog类似,但却不是跨平台的,只支持在Linux系统下使用,而无法在其他平台,如Windows系统下运行。 2. 介绍...

    1. 按

    python watchdog是一个跨平台的,可用于监控某个目录下资源(文件和文件夹)变化的库。pyinotify功能和watchdog类似,但却不是跨平台的,只支持在Linux系统下使用,而无法在其他平台,如Windows系统下运行。

    2. 介绍

    3. 实例

    3.1. 简单实例

    import sys
    import time
    import logging
    from watchdog.observers import Observer
    from watchdog.events import LoggingEventHandler
    
    if __name__ == "__main__":
        logging.basicConfig(level=logging.INFO,
                            format='%(asctime)s - %(message)s',
                            datefmt='%Y-%m-%d %H:%M:%S')
        path = sys.argv[1] if len(sys.argv) > 1 else '.'
        event_handler = LoggingEventHandler()
        observer = Observer()
        observer.schedule(event_handler, path, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()
    

    3.2. 自定义处理事件

    watchdog用来监控指定目录/文件的变化,如添加删除文件或目录、修改文件内容、重命名文件或目录等,每种变化都会产生一个事件,且有一个特定的事件类与之对应,然后再通过事件处理类来处理对应的事件,怎么样处理事件完全可以自定义,只需继承事件处理类的基类并重写对应实例方法。
    watchdog.events.FileSystemEventHandler事件处理器的基类,用于处理事件,用户需继承该类,并在子类中重写对应方法。

    import time
    from watchdog.observers import Observer
    from watchdog.events import FileSystemEventHandler
     
    class MyHandler(FileSystemEventHandler):
        
        def on_moved(self, event):
            super(MyHandler, self).on_moved(event)
            now_time = time.strftime("[\033[32m INFO \033[0m]\033[34m %H:%M:%S \033[0m", time.localtime())
            what = 'directory' if event.is_directory else 'file'
            print("{0} {1} Moved : from {2} to {3}".format(now_time, what, event.src_path, event.dest_path))
    
        def on_deleted(self, event):
            super(MyHandler, self).on_deleted(event)
            now_time = time.strftime("[\033[32m INFO \033[0m]\033[34m %H:%M:%S \033[0m", time.localtime())
            what = 'directory' if event.is_directory else 'file'
            print("{0} {1} Deleted : {2} ".format(now_time, what, event.src_path))
    
        def on_modified(self, event):
            super(MyHandler, self).on_modified(event)
            now_time = time.strftime("[\033[32m INFO \033[0m]\033[34m %H:%M:%S \033[0m", time.localtime())
            what = 'directory' if event.is_directory else 'file'
            print("{0} {1} Modified : {2} ".format(now_time, what, event.src_path))
            
        def on_created(self, event):
            super(MyHandler, self).on_moved(event)
            now_time = time.strftime("[\033[32m INFO \033[0m]\033[34m %H:%M:%S \033[0m", time.localtime())
            what = 'directory' if event.is_directory else 'file'
            print("{0} {1} Created : {2} ".format(now_time, what, event.src_path))
     
    if __name__ == "__main__":
        event_handler = MyHandler()
        observer = Observer()
        observer.schedule(event_handler, path='.', recursive=False)
        observer.start()
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()
    
    • 扩展:self.dispatch(event)接收到一个事件后,通过该方法来决定该event由下面哪个方法处理。
      def dispatch(self, event):
          """Dispatches events to the appropriate methods.
      
          :param event:
              The event object representing the file system event.
          :type event:
              :class:`FileSystemEvent`
          """
          self.on_any_event(event)
          _method_map = {
              EVENT_TYPE_MODIFIED: self.on_modified,
              EVENT_TYPE_MOVED: self.on_moved,
              EVENT_TYPE_CREATED: self.on_created,
              EVENT_TYPE_DELETED: self.on_deleted,
          }
          event_type = event.event_type
          _method_map[event_type](event)
      
    展开全文
  • 用于在Linux中实时监控文件系统的变化。 作为系统管理员,您可以使用它来监视目标感兴趣的更改,如Web目录或应用程序数据存储目录及其他目录。这取决于inotify (包含在 2.6.13及后续Linux内核中的功能),它是一个...

    Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改。用于在Linux中实时监控文件系统的变化。

    作为系统管理员,您可以使用它来监视目标感兴趣的更改,如Web目录或应用程序数据存储目录及其他目录。这取决于inotify (包含在 2.6.13及后续Linux内核中的功能),它是一个事件驱动的通知程序,其通知通过三个系统调用从内核空间导出到用户空间。

    pyinotiy的目的是绑定三个系统调用,并支持其上的实现,提供了一个共同和抽象的手段来操纵这些功能。

    在本文中,我们将向您展示如何在Linux中安装和使用pyinotify来实时监控文件系统更改或修改。

    依赖关系

    为了使用pyinotify ,您的系统必须运行:

    Linux内核2.6.13或更高版本
    Python 2.4或更高版本

    如何在Linux中安装Pyinotify
    首先检查系统上安装的内核和Python版本,如下所示:

    # uname -r 
    # python -V

    一旦满足依赖关系,我们将使用pip来安装pynotify 。 在大多数Linux发行版中,如果您使用从python.org下载的Python 2> = 2.7.9或Python 3> = 3.4二进制文件, Pip已经安装,否则安装如下:

    # apt-get install python-pip

    现在,像这样安装pyinotify:

    # pip install pyinotify

    它将从默认存储库安装可用版本,如果您希望具有最新的稳定版本的pyinotify ,请考虑将其克隆为git仓库,如图所示。

    # git clone https://github.com/seb-m/pyinotify.git
    # cd pyinotify/
    # ls
    # python setup.py install

    如何在Linux中使用pyinotify
    在下面的示例中,我以root用户(通过ssh登录)监视用户 jchen 的home( / home/jchen )目录的任何更改,如屏幕截图所示:

    # python -m pyinotify -v /home/jchen

    监控目录更改

    接下来,我们会随时关注Web目录( /var/www/html/debian.cn )的任何更改:

    # python -m pyinotify -v /var/www/html/debian.cn

    要退出程序,只需点击[Ctrl+C] 。

    注意 :当您运行pyinotify而不指定任何要监视的/tmp时,默认情况下会考虑/tmp 。

    Github上查找更多关于Pyinotify的信息:

    在本文中,我们向您展示了如何安装和使用pyinotify,这是一个用于监视Linux中文件系统更改的有用的Python模块。


    原文发布时间:2011-11-09
    本文来自云栖社区合作伙伴“Debian社区”,了解相关信息可以关注“Debian社区”。
    展开全文
  • 通过自动任务执行监控sh文件,通过python常链接日志文件发送到钉钉 自动任务 1 0 * * * /root/linan/alarm/alarmd.sh stop > /dev/null 2>&1 & #每分钟检查一次 */1 * * * * /root/linan/alarm/...

    晋级版python3的:https://blog.csdn.net/liyyzz33/article/details/97789920
    这个比较老了也可参考

    通过自动任务执行监控sh文件,通过python常链接日志文件发送到钉钉

    自动任务

    1 0 * * * /root/alarmd.sh stop > /dev/null 2>&1 & #每分钟检查一次
    */1 * * * * /root/alarmd.sh start > /dev/null 2>&1 & #每天重启

    alarmd.sh

    #!/bin/bash
    
    comm=$1
    serverip=`192.168.1.123`
    date=`date +%Y%m%d`
    
    pro1='/data/logs/dalu/'
    pro2='/data/logs/dalu2/'
    pro3='/data/logs/dalu2/'
    pro4='/data/logs/dalu3/'
    pro5='/data/logs/dalu4/'
    
    echo $comm
    
    function start () {
    
    	
    Pystatus=`ps -ef | grep $1 | grep -v grep |grep python | wc -l`
    
    if [ $Pystatus -eq 0 ];
    	
    	then
    	
    	echo "`date "+%Y-%m-%d %H:%M:%S"`:$1 is not running" >> /data/logs/python.log    
    	
    	nohup python /root/alarm.py $1 $serverip &
    	
    	echo "`date "+%Y-%m-%d %H:%M:%S"`:$1 is starting" >> /data/logs/python.log
    
    	sleep 5
    		
    	CurrentPystatus=`ps -ef | grep $1 | grep -v grep |grep python | wc -l`
    	
    	if [ $CurrentPystatus -ne 0 ];
    	then
    	echo "`date "+%Y-%m-%d %H:%M:%S"`:$1 is running" >> /data/logs/python.log	
    	fi
    fi
    }
    
    
    if [ "$comm" = "start" ];then
    
    	cd /data/logs
    
    	for dirpath in $pro{1..4}
    
    	do	
    		for error in `find $dirpath -maxdepth 1 -name "*$date.log"`
    		do
    			echo $error
    			start $error 
    		done
    		
    	done
    	
    elif [ "$comm" = "stop" ];then
    
    ps -ef|grep /root/alarm.py |grep -v grep|cut -c 9-15|xargs kill -9
    
    else
    	echo "输入有误,请带参数stop or start!"
    	
    fi
    

    alarm.py

    #!/usr/bin/python
    # -*- coding: utf-8 -*
    
    import json
    import sys,os
    import time
    import urllib2
    
    
    DING_MSG_ID_www = "ccaeb3ad08e0b****************************************"  # PHP_www_error
    DING_MSG_ID_dalu = "ccaeb3ad08e0b****************************************"  # 上传图片失败告警内部  业主APP
    
    
    
    filepath =sys.argv[1]
    serverip =sys.argv[2]
    
    
    errmsg = ""
    
    
    
    def dingtalk_post( tokenid ,errmsg ):
    
        url = "https://oapi.dingtalk.com/robot/send?access_token=%s" % tokenid
        values = {'msgtype': 'text'}
        content = {}
        content['content'] = serverip + errmsg
        values['text'] = content
        headers = {'Content-Type':'application/json;charset=UTF-8'}
        jdata = json.dumps(values)
        print jdata
        req = urllib2.Request(url, jdata , headers)
        response = urllib2.urlopen(req)
        data = json.loads(response.read())
        errcode = data['errcode']
        print errcode
        return errcode
    
    file = open(filepath)
    file.seek(0, os.SEEK_END)
    while 1:
            where = file.tell()
            line = file.readline()
            if not line:
                    time.sleep(1)
                    file.seek(where)
            else:
                if  'dalu3' in filepath :
                        dingtalk_post(DING_MSG_ID_www ,line)
                elif  'dalu2' in filepath :
                       dingtalk_post(DING_MSG_ID_www ,line)
                else:
                      dingtalk_post(DING_MSG_ID_www , line)
    
    展开全文
  • Pyinotify是一个简单而有用的 Python 模块,它可用于在 Linux 中实时监控文件系统更改。 作为一名系统管理员,你可以用它来监视你感兴趣的目录的更改,如 Web 目录或程序数据存储目录及其他目录。 建议阅读:fswatch...
  • 监控文件系统中文件或目录的增删改情况 当特定的文件被创建,删除,修改,移动时执行相应的任务 1.安装 pip install watchdog 示例: import re import os import logging from watchdog.events import ...
  • Pyinotify 是一个简单而有用的 Python 模块,它可用于在 Linux 中实时监控文件系统更改。 作为一名系统管理员,你可以用它来监视你感兴趣的目录的更改,如 Web 目录或程序数据存储目录及其他目录。 它依赖于 ...
  • 众所周知,在运维过程中,实时获取目标文件夹至关重要,Python的watchdog是用程序来监视文件系统事件Python库,所以用该库可以实现对文件夹的实时监控,filenotify.py代码如下: # -*- coding: utf-8 -*- #!/usr/...
  • 文章目录如何获取实时日志实现代码 如何获取实时日志 我们在很多情况下需要获取日志文件中的最新...当然python里面还有2个实时监控文件的模块:pyinotify 以及watchdog 但是首先对于新手来说(或者懒惰的我来说)就需
  • python 日志监控与分析

    2020-03-03 19:31:42
    我之所以写这个,主要是我需要分析日志文件,但是我不想用到那个实时的日志文件分析,而是定时分析日志文件,故需要反复的使用一个文件进行读取操作,优先考虑这种方式把文件对象当成缓存,下次就不需要从头开始读取...
  • 本文主要介绍使用Python调用ADB命令实现实时监控logcat关键字的功能 采用多进程,可同时监控多个设备,监控多个关键字。 需要配置ADB环境,具体配置就不多介绍,随便搜一下一大把,直接上代码 通过一个全局变量控制...
  • python 监控logcat关键字

    千次阅读 多人点赞 2020-09-03 21:06:35
    本文主要介绍使用Python调用ADB命令实现实时监控logcat关键字的功能 采用多进程,可同时监控多个设备,监控多个关键字。 需要配置ADB环境,具体配置就不多介绍,随便搜一下一大把,直接上代码 通过一个全局变量...
  • - 根目录渲染文件index.html - /data路由去数据库插数据,返回json,供画图使用 <pre><code> python from flask import Flask,render_template,request import MySQLdb as mysql con = mysql....
  • 文章目录1.基本查询语句1. CPU核心数 psutil.cpu_count()2. CPU使用率 psutil.cpu_percent(interval=0.5 )3. 内存信息 psutil.virtual_memory()4.... 将查询的实时结果传入log文件 1.基本查询语句 1. CP
  • 用于处理和显示MSI Afterburner记录的硬件使用情况信息的实时图形的Python项目 该项目的目的是制作一系列图形,这些图形在要安装在我的PC上的小型显示器上显示一些硬件使用情况和温度。 该代码是围绕我正在使用的...
  • 下载地址https://github.com/olajowon/loggrove超轻组件Python 3.6Tornado 5.0.2MySQL 5.7JQuery 3.1.0Bootstrap 3.3Sb-admin 2.0Web UI 界面简洁大方的 Web UI 界面,进行 日志目录、日志文件、...
  • 第 14 章 python 监控文件目录变化 第 15 章 Mongodb 千万级数据在 python 下的综合压力测试及应用探讨 第 16 章 通过 memcached 实现领号排队功能及 python 队列实例. 第 17 章 python 之利用 PIL 库实现页面...
  • Unipath:用面向对象的方式操作文件目录。 watchdog:管理文件系统事件的 API 和 shell 工具。 PyFilesystem2:Python文件系统抽象层。 日期和时间 操作日期和时间的类库。 arrow:更好的 Python 日期...
  • 项目中使用python写一个监控程序,每隔5秒监控目录,发现文件就立刻FTP同步到另一台服务器。业务要求高实时性和高可用性。为了谨防程序崩溃,特别编写一个守护进程程序,时刻监控程序是否崩溃并重新启动。 博文: ...
  • Python 第四课 linux命令

    2021-02-10 19:08:17
    这里写目录标题更改权限和用户usermodwhich切换用户 su修改文件权限查询系统信息相关命令系统时间磁盘空间进程信息ps :process status 进程的详细情况top :实时监控,并排序kill :kill -9 进程号其他命令find...
  • 监控系统使用树莓派 使用Raspberry Pi的监视系统。 Pi 2上装有摄像机。然后,我们可以通过访问我们的网站来监视实时流式视频。 主文件夹外部的文件包含用于从网络摄像头拍摄图片并将其发送到我们的服务器空间的代码...
  • 基于Filebeat和kafka日志采集方案

    千次阅读 2019-02-23 17:30:47
    日志文件以固定大小进行切割,使用filebeat监控日志目录实时采集写入kafka中,并通过python kafka消费入库。 Filebeat Filebeat是本地文件的日志数据采集器,监听日志目录或特定文件,并将它们转发给...
  • 实时查看训练过程中的音频数据,监控语音识别与合成等任务的训练过程。 Graph 一键可视化模型的网络结构。可查看模型属性、节点信息、节点输入输出等,并支持节点搜索,辅助用户快速分析模型结构与了解数据流向...
  • CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。 CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架...
  • 30_ElasticSearch IK分词器配置文件 以及自定义词库 31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库 32_ElasticSearch bucket与metric两个核心概念 33_ElasticSearch 统计销量最高 34_Elastic...
  • (1)功能介绍:本模块用于打开存储在本地文件系统上的交通监控视频并将视频流实时显示在软件界面视频播放模块中。 (2)详细实现:由于整个应用程序是基于pyqt5开发的,因此为了不影响整个软件其他功能模块的使用...
  • 爬取通过ajax动态加载的页面(实时监控华尔街见闻资讯与快讯) Python爬虫:人人影视追剧脚本 爬取大西洋月刊每日新闻 (补充)爬取大西洋月刊并 使用彩云小译翻译 API 脚本 数据分析篇 Data Science - Quora ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

python实时监控文件目录

python 订阅