Inotify安裝和案例實現
阿新 • • 發佈:2019-01-28
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()