Maison > Article > développement back-end > Comment implémenter la surveillance des fichiers dans Golang
Dans Golang, vous pouvez utiliser fsnotify pour implémenter la surveillance des fichiers. fsnotify est un outil de surveillance du système de fichiers multiplateforme dans le langage Go, qui implémente une interface de surveillance en temps réel multiplateforme basée sur les canaux ; Golang peut surveiller les fichiers via fsnotify et redémarrer le programme en modifiant les fichiers.
L'environnement d'exploitation de ce tutoriel : système Windows 10, GO version 1.18, ordinateur Dell G3.
Dans Golang, vous pouvez utiliser fsnotify pour implémenter la surveillance des fichiers.
golang surveille les fichiers via fsnotify et redémarre le programme via les modifications de fichiers.
Outil de surveillance du système de fichiers multiplateforme en langage Go - fsnotify
Dans le noyau Linux, Inotify est un mécanisme utilisé pour informer les programmes de l'espace utilisateur des modifications du système de fichiers. Il surveille les modifications du système de fichiers, telles que la création, la modification, la suppression, etc. de fichiers, et peut notifier les applications des événements correspondants.
Inotify peut surveiller à la fois les fichiers et les répertoires. Lors de la surveillance d'un répertoire, il peut surveiller le répertoire ainsi que chaque sous-répertoire et fichier du répertoire en même temps. L'appel système de la bibliothèque standard de Golang implémente ce mécanisme.
Afin d'élargir et d'abstraire davantage, le package github.com/fsnotify/fsnotify implémente une interface de surveillance en temps réel multiplateforme basée sur les canaux.
Utilisation de l'outil fsnotify
1. Téléchargez les packages dont nous avons besoin
go get github.com/fsnotify/fsnotify
2 Utilisez fsnotify pour surveiller les fichiers
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 40 41 42 43 44 45 46 47 48 49 50 5 1 52 53 54 55 56 57 58 59 60 |
🎜🎜 importer ( 🎜🎜 "github.com/fsnotify/fsnotify" code>🎜🎜
|
Les résultats du test sont les suivants :
Toutes nos opérations dans le répertoire tmp ont été capturées, mais il y a un problème avec fsnotify. Il ne peut pas nous aider à capturer les événements d'opération des sous-répertoires et des répertoires petits-fils de manière récursive. mis en œuvre par nous-mêmes.
Un autre problème est que lorsque nous modifions le nom du dossier, l'event.Name dans fsnotify est toujours le nom du fichier d'origine, ce qui nous oblige à d'abord supprimer la surveillance précédente, puis à ajouter une nouvelle surveillance dans l'événement rename.
Modifié comme suit :
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 41 4 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 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import ( 🎜
|
Les résultats du test sont les suivants :
Après l'exemple ci-dessus, nous utilisons fsnotify pour écrire un fichier de configuration de surveillance. Si le fichier de configuration est modifié, le service sera redémarré.
Nous écrivons d'abord un programme exe qui peut être exécuté. Le code server.go est le suivant :
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 3 7 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5 5 56 57 58 |
🎜🎜import ( 🎜 🎜 "io/ioutil" 🎜🎜 code>
|
使用如下命令,编译成exe文件
1 |
|
Le code fsnotify3.go du fichier de surveillance est le suivant :
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 909 19293949596979899100101 102103104105 106 107108109 110 111 |
|
Nous exécutons le fichier fsnotify3.go pour surveiller notre fichier de configuration
Comme vous pouvez le voir sur l'image ci-dessus, lorsque nous modifions le numéro de port dans le fichier de configuration, le processus sera tué en premier, puis démarrez un autre processus.
Apprentissage recommandé : Tutoriel Golang
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!