天天看點

檔案監控工具之fileboy

github:​​dengsgo/fileboy: fileboy,檔案變更監聽通知工具,使用 Go 編寫。Fileboy, File Change Monitoring Notification Tool, written with Go. (github.com)​​​

​​fileboy: fileboy,檔案變更監聽通知系統,使用 Go 編寫。适用于 Hot Reload (典型的如開發go項目,無需每次手動執行 go build;又比如前端 node 打包) 或者 系統監控的場景。 (gitee.com)​​

fileboy,檔案變更監聽通知工具,使用 Go 編寫。

适用于 Hot Reload (典型的如開發go項目,無需每次手動執行 go build;又比如前端 node 打包) 或者 系統監控的場景。

1.下載下傳二進制檔案

wget  https://gitee.com/dengsgo/fileboy/attach_files/344840/download/fileboy-linux-amd64.bin      

将二進制檔案重命名未fileboy, 并加入PATH中,可全局使用

2.在需要監控的項目目錄中,添加配置檔案

fileboy init
該目錄下會生成filegirl.yaml檔案

修改配置      
# 主配置
core:
    # 配置版本号
    version: 1

# 監控配置
monitor:
    # 要監聽的目錄
    # test1       監聽目前目錄下 test1 目錄
    # test1/test2 監聽目前目錄下 test1/test2 目錄
    # test1,*     監聽目前目錄下 test1 目錄及其所有子目錄(遞歸)
    # .,*         監聽目前目錄及其所有子目錄(遞歸)
    includeDirs:
        - .,*

    # 不監聽的目錄
    # .idea   忽略.idea目錄及其所有子目錄的監聽
    exceptDirs:
        - .idea
        - .git
        - .vscode
        - node_modules
        - vendor

    # 監聽檔案的格式,此類檔案更改會執行 command 中的指令
    # .go   字尾為 .go 的檔案更改,會執行 command 中的指令
    # .*    所有的檔案更改都會執行 command 中的指令
    types:
        - .go

    # 監聽的事件類型,發生此類事件才執行 command 中的指令
    # 沒有該配置預設監聽所有事件
    # write   寫入檔案事件
    # rename  重命名檔案事件
    # remove  移除檔案事件
    # create  建立檔案事件
    # chmod   更新檔案權限事件(類unix)
    events:
        - write
        - rename
        - remove
        - create
        - chmod

# 指令
command:
    # 監聽的檔案有更改會執行的指令
    # 可以有多條指令,會依次執行
    # 如有多條指令,每條指令都會等待上一條指令執行完畢後才會執行
    # 如遇互動式指令,允許外部擷取輸入
    # 支援變量占位符,運作指令時會替換成實際值:
    #    {{file}}    檔案名(如 a.txt 、test/test2/a.go)
    #    {{ext}}     檔案字尾(如 .go)
    #    {{event}}   事件(上面的events, 如 write)
    #    {{changed}} 檔案更新的本地時間戳(納秒,如 1537326690523046400)
    # 變量占位符使用示例:cp {{file}} /root/sync -rf  、 myCommand --{{ext}} {{changed}}
    exec:
        - go version
        - go env

    # 檔案變更後指令在xx毫秒後才會執行,機關為毫秒
    # 一個變更事件(A)如果在定義的延遲時間(t)内,又有新的檔案變更事件(B),那麼A會取消執行。
    # B及以後的事件均依次類推,直到事件Z在t内沒有新事件産生,Z 會執行
    # 合理設定延遲時間,将有效減少備援和重複任務的執行
    # 如果不需要該特性,設定為 0
    delayMillSecond: 2000

# 通知器
notifier:
    # 檔案更改會向該 url 發送請求(POST 一段 json 文本資料)
    # 觸發請求的時機和執行 command 指令是一緻的
    # 請求逾時 15 秒
    # POST 格式:
    #    Content-Type: application/json;charset=UTF-8
    #    User-Agent: FileBoy Net Notifier v1.16
    #    Body: {"project_folder":"/project/path","file":"main.go","changed":1576567861913824940,"ext":".go","event":"write"}
    # 例: http://example.com/notifier/fileboy-listener
    # 不啟用通知,請留白 ""
    callUrl: ""

# 特殊指令
instruction:
    # 可以通過特殊的指令選項來控制 command 的行為,指令可以有多個
    # 指令選項解釋:
    #   exec-when-start    fileboy啟動就緒後,自動執行一次 'exec' 定義的指令
    #   should-finish      觸發執行 'exec' 時(C),如果上一次的指令(L)未退出(還在執行),會等待 L 退出(而不是強制 kill ),直到 L 有明确 exit code 才會開始執行本次指令。
    #                      在等待 L 退出時,又有新事件觸發了指令執行(N),則 C 執行取消,隻會保留最後一次的 N 執行
    #   ignore-stdout      執行 'exec' 産生的 stdout 會被丢棄
    #   ignore-warn        fileboy 自身的 warn 資訊會被丢棄
    #   ignore-info        fileboy 自身的 info 資訊會被丢棄
    #   ignore-exec-error  執行 'exec' 出錯仍繼續執行下面的指令而不退出 

    #- should-finish
    #- exec-when-start
    - ignore-warn      

想要發送通知到一個webhook中, 需要填寫callUrl位址

3.啟動服務

直接在配置檔案目錄下執行

fileboy      

  

用于監控檔案的變更情況真心很有用,之前也有用log.io但是log.io監控檔案并沒有提供消息通知的功能, 更适合用于線上調試問題, 實時檢視日志内容