本篇內(nèi)容介紹了“golang如何實(shí)現(xiàn)文件監(jiān)控”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、殷都ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的殷都網(wǎng)站制作公司
在golang中,可以利用fsnotify來(lái)實(shí)現(xiàn)文件監(jiān)控。fsnotify是go語(yǔ)言跨平臺(tái)文件系統(tǒng)監(jiān)控工具,實(shí)現(xiàn)了一個(gè)基于channel的、跨平臺(tái)的實(shí)時(shí)監(jiān)聽(tīng)接口;golang通過(guò)fsnotify可監(jiān)控文件,并通過(guò)文件變化重啟程序。
在golang中,可以利用fsnotify來(lái)實(shí)現(xiàn)文件監(jiān)控。
golang 通過(guò)fsnotify監(jiān)控文件,并通過(guò)文件變化重啟程序。
go語(yǔ)言跨平臺(tái)文件系統(tǒng)監(jiān)控工具 — fsnotify
在 linux 內(nèi)核中,Inotify 是一種用于通知用戶空間程序文件系統(tǒng)變化的機(jī)制。它監(jiān)控文件系統(tǒng)的變化,如文件新建、修改、刪除等,并可以將相應(yīng)的事件通知給應(yīng)用程序。
Inotify 既可以監(jiān)控文件,也可以監(jiān)控目錄。當(dāng)監(jiān)控目錄時(shí),它可以同時(shí)監(jiān)控目錄及目錄中的各子目錄及文件。Golang 的標(biāo)準(zhǔn)庫(kù) syscall 實(shí)現(xiàn)了該機(jī)制。
為了進(jìn)一步擴(kuò)展和抽象, github.com/fsnotify/fsnotify 包實(shí)現(xiàn)了一個(gè)基于 channel 的、跨平臺(tái)的實(shí)時(shí)監(jiān)聽(tīng)接口。
fsnotify工具的使用
一、下載我們需要的包
go get github.com/fsnotify/fsnotify
二、使用fsnotify監(jiān)控文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
測(cè)試結(jié)果如下:
我們?cè)趖mp目錄下的操作都被捕捉到了,但是fsnotify有一個(gè)問(wèn)題,它無(wú)法遞歸的幫我們捕捉子目錄、孫子目錄的操作事件,這需要我們自已來(lái)實(shí)現(xiàn)。
還有一個(gè)問(wèn)題就是當(dāng)們修改文件夾名稱時(shí),fsnotify中event.Name仍然是原來(lái)的文件名,這就需要我們?cè)谥孛录?,先移除之前的監(jiān)控,然后添加新的監(jiān)控。
修改如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
|
測(cè)試結(jié)果如下:
經(jīng)過(guò)上面的例子,我們通過(guò)fsnotify來(lái)寫(xiě)一個(gè)監(jiān)控配置文件,如果配置文件有修改,就重新啟動(dòng)服務(wù)。
我們先寫(xiě)一個(gè)可以運(yùn)行的exe程序,server.go代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
|
使用如下命令,編譯成exe文件
1 |
|
監(jiān)控文件fsnotify3.go代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
網(wǎng)站名稱:golang如何實(shí)現(xiàn)文件監(jiān)控 瀏覽地址:http://weahome.cn/article/gsogos.html 其他資訊 |