1. 程式人生 > >Inotify安裝和案例實現

Inotify安裝和案例實現

Inotify介紹

inotify
Inotify可用於檢測單個檔案,也可以檢測整個目錄。當檢測的物件是一個目錄的時候,目錄本身和目錄裡的內容都會成為檢測的物件。

安裝

rpm -qa inotify-tools #如果沒安裝
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install inotify-tools -y

引數詳解

-e: 事件 
-d:後臺執行
-m:始終保持事件監聽狀態
-q:列印很少的資訊,僅僅列印監控事件的資訊  安靜狀態
-r :遞迴查詢目錄
-timefmt:指定時間輸出的格式
-excluder:排除檔案或者目錄的時候不區分大小寫
Events:

        access          file or directory contents were read   訪問

        modify          file or directory contents were written  修改

        attrib          file or directory attributes changed  屬性發生變化

        close_write     file or directory closed, after
being opened in 寫入之後關閉 writeable mode close_nowrite file or directory closed, after being opened in read-only mode close file or directory closed, regardless of read/write mode open file or directory
opened moved_to file or directory moved to watched directory 移動到哪裡 moved_from file or directory moved from watched directory move file or directory moved to or from watched directory create file or directory created within watched directory delete file or directory deleted within watched directory delete_self file or directory was deleted unmount file system containing file or directory unmounted解除安裝

案例實現

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-06-05
# @Author  : ${anan} ($mail})
# @Link    : ${link}
# @Version : $v1.0$
# function :實現對當前目錄的監控,若當前目錄有檔案內容修改,則將修改的日誌打印出來。
import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)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(30)
except KeyboardInterrupt:
    observer.stop()
    observer.join()