go语言之监控文件夹
·
//在执行文件中
// conf
// |--app.conf
// monitor.exe
// app.conf中的内容
// command="ls -l"
// monitordir ="c:\\test"
// 在windows下会执行两次
// https://github.com/howeyc/fsnotify/issues/106
package main
import (
"fmt"
"github.com/astaxie/beego"
"gopkg.in/fsnotify.v1"
"os/exec"
"strings"
)
func mkcmd(command string) error {
argArray := strings.Split(command, " ")
cmd := exec.Command(argArray[0], argArray[1:]...)
buff, err := cmd.Output()
fmt.Println(string(buff))
if err != nil {
return err
}
return nil
}
func main() {
command := beego.AppConfig.String("command")
monitordir := beego.AppConfig.String("monitordir")
fmt.Printf("command=%s, monitordir=%s\n", command, monitordir)
watcher, err := fsnotify.NewWatcher()
if err != nil {
fmt.Println(err)
}
defer watcher.Close()
done := make(chan bool)
// Process events
go func() {
for {
select {
case ev := <-watcher.Events:
//do something
if ev.Op&fsnotify.Write == fsnotify.Write {
err := mkcmd(command)
if err != nil {
fmt.Println(err)
}
}
case err := <-watcher.Errors:
fmt.Println(err)
}
}
}()
err = watcher.Add(monitordir)
if err != nil {
fmt.Println(err)
}
<-done
watcher.Close()
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)