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監控檔案并沒有提供消息通知的功能, 更适合用于線上調試問題, 實時檢視日志内容