如何用 Shell 監控文件變化?

文件監控能夠配合rsync實現文件自動同步,例如監聽某個目錄,當文件變化時,使用rsync命令將變化的文件同步。(可用於代碼自動發佈)html

實現文件自動同步,例如監聽某個目錄,當文件變化時,使用rsync命令將變化的文件同步。(可用於代碼自動發佈)。linux

inotify 是linux內核的一個特性,在內核 2.6.13 以上均可以使用。shell

若是在shell環境下,能夠安裝 yum install inotify-tools,安裝之後有兩個命令能夠用inotifywait 和 inotifywatch,inotifywait 是須要使用的命令。bash

監聽/usr/local/src 目錄:app

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M'
--format '%T %w %f %e' -e modify,delete,create,attrib 
/usr/local/src

參數:spa

  • -m 持續監聽
  • -r 使用遞歸形式監視目錄
  • -q 減小冗餘信息,只打印出須要的信息
  • -e 指定要監視的事件,多個時間使用逗號隔開
  • --timefmt 時間格式
  • --format 監聽到的文件變化的信息
  • --timefmt 說明:
  • ymd分別表示年月日,H表示小時,M表示分鐘

--format說明:執行上面的命令以後,在監聽的目錄下建立一個1.txt文件,獲得以下結果:3d

22/03/18 17:22 /usr/local/src/ 1.txt CREATE
22/03/18 17:22 /usr/local/src/ 1.txt ATTRIB

這個腳本的功能是循環監聽文件或目錄的增刪改事件,當事件發生執行設置的腳本文件。code

#!/bin/sh
  # 監視的文件或目錄
  filename=$1
  # 監視發現有增、刪、改時執行的腳本
  script=$2
  inotifywait -mrq --format '%e' --event create,delete,modify  $filename | while read event
  do
      case $event in MODIFY|CREATE|DELETE) bash $script ;;
      esac
  done

shell腳本後臺執行

nohuporm

使用nohup,其中test.sh爲所執行的腳本,out.txt爲輸出信息的地方。htm

nohup sh test.sh>out.txt &

來源:https://www.cnblogs.com/youxi...

image

相關文章
相關標籤/搜索