在 go-inotify 中查看递归目录
Posted
技术标签:
【中文标题】在 go-inotify 中查看递归目录【英文标题】:Watch recursive directories in go-inotify 【发布时间】:2016-04-29 05:01:20 【问题描述】:我使用这个 go library https://godoc.org/golang.org/x/exp/inotify 在 Linux inotify 中的文件和文件夹监视程序,当我们直接在 Linux 中使用它时,它提供了一个参数来监视递归目录,即 --r 但是在这个包装器中我如何指定 while调用函数。
package main
import (
"golang.org/x/exp/inotify"
"log"
)
func main()
watcher, err := inotify.NewWatcher()
if err != nil
log.Fatal(err)
err = watcher.Watch("/home/minions")
if err != nil
log.Fatal(err)
for
select
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
这是我的代码。
【问题讨论】:
【参考方案1】:你不能。 INotify 不是递归的,因此您必须列出所有子目录(注意留意新目录的创建!)并根据需要添加新手表。
一个竞争库有一个用于递归目录监视的开放票,但截至 2016 年仍未解决:https://github.com/howeyc/fsnotify/issues/56
【讨论】:
但是我没有使用这个包,正如我在问题中提到的那样,我正在使用这个godoc.org/golang.org/x/exp/inotify 并且从这个unix.stackexchange.com/questions/164794/… 我发现至少 inotifywatch 有这个递归选项。 @ShilpiAgrawal:是的,我知道。我的答案仍然成立。请再读一遍。仅仅因为其他一些程序有递归选项并不意味着你的库有。 我知道@JohnZwinck 但我问这个问题是因为我使用它的库只是该程序的包装器所以,我想他们可能有它。反正没问题,我想改用python的看门狗。 @ShilpiAgrawal:您在 Go 中使用的库是 INotify 的 C 库的包装器,而不是支持递归的程序。 Go 库不调用单独的程序,它只是调用本身不支持递归监视的 C 库。 深入gohugo.io的源码,如果你想挖掘它,是一个递归手表。我怀疑他只是遍历所有目录并在所有目录中发出监视。使用提供的频道以上是关于在 go-inotify 中查看递归目录的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用fs包的dir_info函数查看文件夹下所有目录的大小递归地计算所有目录的实际大小(多少M多少GTabulate and display folder size)
R语言使用fs包的dir_info函数查看文件夹下所有目录的大小递归地计算所有目录的实际大小(多少M多少GTabulate and display folder size)