inotify 是乙個 linux特性,它監控檔案系統操作,比如讀取、寫入和建立。inotify 反應靈敏,用法非常簡單,並且比 cron 任務的繁忙輪詢高效得多。學習如何將 inotify 整合到您的應用程式中,並發現一組可用來進一步自動化系統治理的命令列工具。
通俗來說,inotify可以監控檔案的狀態並且對變化的狀態做出一些操作。
檢視inotify 軟體
[root@250 nginx]# inotifywait -h
inotifywait 3.14
usage: inotifywait [ 選項 ] file1 [ file2 ] [ file3 ] [ ... ]
選項: @排除某些檔案.
--exclude 排除匹配的檔案
--excludei 大小寫不敏感排除指定樣式的檔案
-m|--monitor 保持監聽狀態,如果不設定這個選項,inotifywait只執行一次就會退出。
-d|--daemon 類似於-m,但是在後台執行,輸出事件到特定的檔案可以通過 --outfile. 意味著 --syslog.
-r|--recursive 遞迴監聽目錄
-s|--syslog 傳送錯誤日誌到syslog而不是stderr
-q|--quiet 靜態模式,不輸出資訊
-qq 什麼都不輸出
--timefmt 時間格式
-e|--event [ -e|--event ... ]
監聽指定的事件,如果不指定,所有的事件都被監聽。
exit status:
0 - 收到了指定的事件
1 - 收到了沒有指定的事件,或者出現了一些錯誤
2 - 沒有收到事件
可以監聽的事件:
access 訪問,讀取檔案。
modify 修改,檔案內容被修改。
attrib 屬性,檔案元資料被修改。
move 移動,對檔案進行移動操作。
create 建立,生成新檔案
open 開啟,對檔案進行開啟操作。
close 關閉,對檔案進行關閉操作。
delete 刪除,檔案被刪除。
只有當nginx的配置檔案寫入完成的時候重啟nginx
#!/bin/bash
inotifywait -m -e close_write -r /usr/local/openresty/nginx/conf/ |
while read events;
do echo $events;
nginx -s reload;
echo "nginx reloaded!"
done
監聽某個目錄下的檔案狀態,輸出事件
#!/bin/bash
#filename watchdir.sh
path=$1
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%h:%m' --format '%t %[w]( "w命令") %f' -e modify,delete,create,attrib $path
介紹了inotify-tools的一些特性,與命令的使用。
inotify可以監控檔案的狀態並且對檔案變化的狀態做出一些自定義操作。
linux inotify 觸發點探秘
之前寫過一篇通過inotify來實現高效能的檔案佇列的文章,對inotify觸發的點有些疑問,到底是底層檔案發生變化後才trigger event還是在write complete後才觸發的event。有必要搞清楚這個問題。檢視vfs write相關原始碼 static ssize t vfs wr...
Apache VFS 2 檔案的監聽和監控
apache vfs 1 基本介紹 apache vfs 2 檔案的監聽和監控 apache vfs 3 檔案過濾器和選擇器 apache vfs 4 事件 apache vfs 5 使用它!apache vfs 6 幾個重要的概念性介面 apache vfs 7 檔案管理器解析檔案的方法 apac...
es6檔案監聽,專案構建測試
清除模板內容 import gulp from gulp import delfrom del import args from util args 清空模板中的資料,減少重複安裝等步驟 gulp.task clean 編譯為es2015 編譯順序 import gulp from gulp imp...