写go踩坑,使用第三方包fsnotify监听文件变动,Liunx下只能监听到第一次

写go踩坑,使用第三方包fsnotify监听文件变动,Liunx下只能监听到第一次

踩坑描述:今天接到一个监听文件变动后读取文件数据需求,在本地windows写的好好的,一点毛病都没,发到服务器ubuntu后就发现一个恶心问题,只有第一次修改才能监测到后面就监听不到,然后开启各种尝试定位百度一直没解决,后面发现原来是文件权限问题,日了。需要 chmod +777 filename 权限才能监听到

代码示例 监听1.txt文件变动

package main

import (
	"fmt"
	"github.com/fsnotify/fsnotify"
	"log"
	"sync"
	"time"
)

func main() {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.Fatal(err)
	}
	defer watcher.Close()
	
	var mu sync.Mutex
	var lastEventTime = make(map[string]time.Time)
	
	err = watcher.Add("1.txt")
	if err != nil {
		return
	}
	
	for {
		select {
		case event := <-watcher.Events:
			mu.Lock()
			lastTime, ok := lastEventTime[event.Name]
			currentTime := time.Now()
	
			if !ok || currentTime.Sub(lastTime) > 500*time.Millisecond { // 500ms 作为示例
				fmt.Printf("New event: %+v\n", event)
				if event.Op&fsnotify.Write == fsnotify.Write {
					fmt.Println("modified file:", event.Name)
				}
				lastEventTime[event.Name] = currentTime
			}
			mu.Unlock()
		case err = <-watcher.Errors:
			log.Println("error:", err)
		}
	}
}

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 11:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-11 11:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-11 11:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-11 11:02:03       18 阅读

热门阅读

  1. 数据仓库技术及应用(Hive调优)

    2024-06-11 11:02:03       8 阅读
  2. 现代 C++的高效并发编程模式

    2024-06-11 11:02:03       8 阅读
  3. 2024.6.10刷题记录

    2024-06-11 11:02:03       13 阅读
  4. 三分的空间至关重要

    2024-06-11 11:02:03       6 阅读
  5. 【烟花game】

    2024-06-11 11:02:03       10 阅读
  6. 【DevOps】什么是 pfSense?免费构建SDWAN

    2024-06-11 11:02:03       12 阅读
  7. MATLAB入门教程

    2024-06-11 11:02:03       11 阅读
  8. PHP的基础代码

    2024-06-11 11:02:03       9 阅读