File system notifications for Go
fsnotify utilizes golang.org/x/sys rather than
syscall from the standard library. Ensure you have the latest version installed by running:
go get -u golang.org/x/sys/...
Cross platform: Windows, Linux, BSD and macOS.
|inotify||Linux 2.6.27 or later, Android*||Supported|
|kqueue||BSD, macOS, iOS*||Supported|
|FEN||Solaris 11||In Progress|
* Android and iOS are untested.
Go 1.6 supports dependencies located in the
vendor/ folder. Unless you are creating a library, it is recommended that you copy fsnotify into
vendor/github.com/fsnotify/fsnotify within your project, and likewise for
Please refer to CONTRIBUTING before opening an issue or pull request.
When a file is moved to another directory is it still being watched?
No (it shouldn't be, unless you are watching where it was moved to).
When I watch a directory, are all subdirectories watched as well?
No, you must add watches for any directory you want to watch (a recursive watcher is on the roadmap #18).
Do I have to watch the Error and Event channels in a separate goroutine?
As of now, yes. Looking into making this single-thread friendly (see howeyc #7)
Why am I receiving multiple events for the same file on OS X?
Spotlight indexing on OS X can result in multiple events (see howeyc #62). A temporary workaround is to add your folder(s) to the Spotlight Privacy settings until we have a native FSEvents implementation (see #11).
How many files can be watched at once?
There are OS-specific limits as to how many watches can be created:
- Linux: /proc/sys/fs/inotify/max_user_watches contains the limit, reaching this limit results in a "no space left on device" error.
- BSD / OSX: sysctl variables "kern.maxfiles" and "kern.maxfilesperproc", reaching these limits results in a "too many open files" error.
Package fsnotify provides a platform-independent interface for file system notifications.
Common errors that can be reported by a watcher
Event represents a single file system notification.
type Op uint32
Op describes a set of file operations.
These are the generalized file operations that can trigger a notification.
Watcher watches a set of files, delivering events to a channel.
func NewWatcher ¶
NewWatcher establishes a new watcher with the underlying OS and begins waiting for events.
Add starts watching the named file or directory (non-recursively).
Close removes all watches and closes the events channel.