Linux inotify監聽檔案狀態

2022-06-25 19:30:19 字數 1859 閱讀 9348

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...