golang에서는 fsnotify를 사용하여 파일 모니터링을 구현할 수 있습니다. fsnotify는 채널 기반의 크로스 플랫폼 실시간 모니터링 인터페이스를 구현하는 Go 언어의 크로스 플랫폼 파일 시스템 모니터링 도구입니다. golang은 fsnotify를 통해 파일을 모니터링하고 파일 변경을 통해 프로그램을 다시 시작할 수 있습니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, GO 버전 1.18, Dell G3 컴퓨터.
golang에서는 fsnotify를 사용하여 파일 모니터링을 구현할 수 있습니다.
golang은 fsnotify를 통해 파일을 모니터링하고 파일 변경을 통해 프로그램을 다시 시작합니다.
Go 언어 크로스 플랫폼 파일 시스템 모니터링 도구 - fsnotify
Linux 커널에서 Inotify는 사용자 공간 프로그램에 파일 시스템 변경 사항을 알리는 데 사용되는 메커니즘입니다. 파일 생성, 수정, 삭제 등의 파일 시스템 변경 사항을 모니터링하고 해당 이벤트를 애플리케이션에 알릴 수 있습니다.
Inotify는 파일과 디렉터리를 모두 모니터링할 수 있습니다. 디렉터리를 모니터링할 때 디렉터리와 해당 디렉터리의 각 하위 디렉터리 및 파일을 동시에 모니터링할 수 있습니다. Golang의 표준 라이브러리 syscall은 이 메커니즘을 구현합니다.
추가로 확장하고 추상화하기 위해 github.com/fsnotify/fsnotify 패키지는 채널 기반의 크로스 플랫폼 실시간 모니터링 인터페이스를 구현합니다.
fsnotify 도구 사용
1. 필요한 패키지를 다운로드하세요
go get github.com/fsnotify/fsnotify
2. fsnotify를 사용하여 파일을 모니터링하세요
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 3 5 36 37 38 39ㅋㅋㅋ 1 52 53 54 55 56 57 58 59 60 package main;
가져오기(
"github.com/fsnotify/fsnotify" code><p class="line number54 index53 alt1"></p>
<code class="js space"> "log"
"fmt"
|
테스트 결과는 다음과 같습니다.
tmp 디렉터리의 모든 작업이 캡처되었지만 fsnotify에 문제가 있습니다. 이는 하위 디렉터리와 하위 디렉터리의 작업 이벤트를 재귀적으로 캡처하는 데 도움이 되지 않습니다. 스스로 구현했습니다.
또 다른 문제는 폴더 이름을 수정할 때 fsnotify의 event.Name이 여전히 원래 파일 이름이므로 먼저 이전 모니터링을 제거한 다음 이름 바꾸기 이벤트에 새 모니터링을 추가해야 한다는 것입니다.
다음과 같이 수정됨:
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 2 6 27 28 29 30 31 32 33 34 35 36 37 38 39 40# 2 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 7 6 77 78 79 80 81 82 83 84 85 86 87 88 패키지 메인; |
|
테스트 결과는 다음과 같습니다.
위 예제 이후 fsnotify를 사용하여 모니터링 구성 파일을 작성하면 구성 파일이 수정되면 서비스가 다시 시작됩니다.
먼저 실행할 수 있는 exe 프로그램을 작성합니다.
1 23456789 1011121314151617181920 21222324 2526272829303132333435363 738 394041 42 4344454647484950515253 545 55657 58 |
package main;
가져오기( 🎜 🎜 "io/ioutil" 🎜🎜 code>"log" 🎜🎜 "encoding/json" 🎜🎜 "net" 🎜🎜 "fmt" 🎜🎜 "os" 🎜🎜 "os/signal" 🎜🎜) 🎜🎜 🎜🎜<code class="js plain">const ( 🎜🎜 confFilePath = "./conf/conf.json" ; 🎜🎜) code>🎜🎜<code class="js space"> 🎜
|
使用如下命令,编译成exe文件
1 |
|
모니터링 파일 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 4 1 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 9 1 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
|
fsnotify3.go 파일을 실행하여 구성 파일을 모니터링합니다
위 그림에서 볼 수 있듯이 구성 파일에서 포트 번호를 수정하면 프로세스는 다음과 같습니다. 먼저 kill 하고 다른 프로세스를 시작합니다.
추천 학습: Golang 튜토리얼
위 내용은 golang에서 파일 모니터링을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!