summaryrefslogtreecommitdiff
path: root/man/inotifywait.1
diff options
context:
space:
mode:
Diffstat (limited to 'man/inotifywait.1')
-rw-r--r--man/inotifywait.1350
1 files changed, 350 insertions, 0 deletions
diff --git a/man/inotifywait.1 b/man/inotifywait.1
new file mode 100644
index 0000000..191ed9b
--- /dev/null
+++ b/man/inotifywait.1
@@ -0,0 +1,350 @@
+.TH inotifywait 1 "March 14, 2010" "inotifywait 3.14"
+
+.SH NAME
+inotifywait \- wait for changes to files using inotify
+
+.SH SYNOPSIS
+.B inotifywait
+.RB [ \-hcmrq ]
+.RB [ \-e
+<event> ]
+.RB [ \-t
+<seconds> ]
+.RB [ \-\-format
+<fmt> ]
+.RB [ \-\-timefmt
+<fmt> ]
+<file> [ ... ]
+
+.SH DESCRIPTION
+.B inotifywait
+efficiently waits for changes to files using Linux's
+.BR inotify(7)
+interface. It is suitable for waiting for changes to files from shell scripts.
+It can either exit once an event occurs, or continually execute and output events
+as they occur.
+
+.SH OUTPUT
+.B inotifywait
+will output diagnostic information on standard error and event information on
+standard output. The event output can be configured, but by default it
+consists of lines of the following form:
+
+.B watched_filename EVENT_NAMES event_filename
+
+.TP
+.B watched_filename
+is the name of the file on which the event occurred. If the file is a directory,
+a trailing slash is output.
+.TP
+.B EVENT_NAMES
+are the names of the inotify events which occurred, separated by commas.
+.TP
+.B event_filename
+is output only when the event occurred on a directory, and in this case the name
+of the file within the directory which caused this event is output.
+
+By default, any special characters in filenames are not escaped in any way. This
+can make the output of inotifywait difficult to parse in awk scripts or similar.
+The
+.B \-\-csv
+and
+.B \-\-format
+options will be helpful in this case.
+
+.SH OPTIONS
+.TP
+.B \-h, \-\-help
+Output some helpful usage information.
+.TP
+.B @<file>
+When watching a directory tree recursively, exclude the specified file from
+being watched. The file must be specified with a relative or absolute path
+according to whether a relative or absolute path is given for watched
+directories. If a specific path is explicitly both included and excluded, it
+will always be watched.
+
+.B Note:
+If you need to watch a directory or file whose name starts with @, give the
+absolute path.
+.TP
+.B \-\-fromfile <file>
+Read filenames to watch or exclude from a file, one filename per line. If
+filenames begin with @ they are excluded as described above. If <file> is `-',
+filenames are read from standard input. Use this option if you need to watch
+too many files to pass in as command line arguments.
+.TP
+.B \-m, \-\-monitor
+Instead of exiting after receiving a single event, execute indefinitely. The
+default behaviour is to exit after the first event occurs.
+.TP
+.B \-d, \-\-daemon
+Same as \-\-monitor, except run in the background logging events to a file
+that must be specified by \-\-outfile. Implies \-\-syslog.
+.TP
+.B \-o, \-\-outfile <file>
+Output events to <file> rather than stdout.
+.TP
+.B \-s, \-\-syslog
+Output errors to
+.BR syslog(3)
+system log module rather than stderr.
+.TP
+.B \-r, \-\-recursive
+Watch all subdirectories of any directories passed as arguments. Watches
+will be set up recursively to an unlimited depth. Symbolic links are not
+traversed. Newly created subdirectories will also be watched.
+
+.B Warning:
+If you use this option while watching the root directory
+of a large tree, it may take quite a while until all inotify watches are
+established, and events will not be received in this time. Also, since one
+inotify watch will be established per subdirectory, it is possible that the
+maximum amount of inotify watches per user will be reached. The default
+maximum is 8192; it can be increased by writing to
+.BR /proc/sys/fs/inotify/max_user_watches .
+
+.TP
+.B \-q, \-\-quiet
+If specified once, the program will be less verbose. Specifically, it will not
+state when it has completed establishing all inotify watches.
+
+If specified twice, the program will output nothing at all, except in the case
+of fatal errors.
+
+.TP
+.B \-\-exclude <pattern>
+Do not process any events whose filename matches the specified POSIX extended
+regular expression, case sensitive.
+
+.TP
+.B \-\-excludei <pattern>
+Do not process any events whose filename matches the specified POSIX extended
+regular expression, case insensitive.
+
+.TP
+.B \-t <seconds>, \-\-timeout <seconds>
+Exit if an appropriate event has not occurred within <seconds> seconds. If
+<seconds> is zero (the default), wait indefinitely for an event.
+
+.TP
+.B \-e <event>, \-\-event <event>
+Listen for specific event(s) only. The events which can be listened for are
+listed in the
+.B EVENTS
+section. This option can be specified more than once. If omitted, all events
+are listened for.
+
+.TP
+.B \-c, \-\-csv
+Output in CSV (comma-separated values) format. This is useful when filenames
+may contain spaces, since in this case it is not safe to simply split the output
+at each space character.
+
+.TP
+.B \-\-timefmt <fmt>
+Set a time format string as accepted by strftime(3) for use with the `%T' conversion
+in the \-\-format option.
+
+.TP
+.B \-\-format <fmt>
+Output in a user-specified format, using printf-like syntax. The event strings
+output are limited to around 4000 characters and will be truncated to this length.
+The following conversions are supported:
+
+.TP
+%w
+This will be replaced with the name of the Watched file on which an event occurred.
+
+.TP
+%f
+When an event occurs within a directory, this will be replaced with the name of the
+File which caused the event to occur. Otherwise, this will be replaced with an
+empty string.
+
+.TP
+%e
+Replaced with the Event(s) which occurred, comma-separated.
+
+.TP
+%Xe
+Replaced with the Event(s) which occurred, separated by whichever character is
+in the place of `X'.
+
+.TP
+%T
+Replaced with the current Time in the format specified by the \-\-timefmt option,
+which should be a format string suitable for passing to strftime(3).
+
+
+
+.SH "EXIT STATUS"
+.TP
+.B 0
+The program executed successfully, and an event occurred which was being
+listened for.
+.TP
+.B 1
+An error occurred in execution of the program, or an event occurred which was
+not being listened for. The latter generally occurs if something happens which
+forcibly removes the inotify watch, such as a watched file being deleted or the
+filesystem containing a watched file being unmounted.
+.TP
+.B 2
+The
+.B \-t
+option was used and an event did not occur in the specified interval of time.
+
+.SH EVENTS
+The following events are valid for use with the
+.B \-e
+option:
+
+.TP
+.B access
+A watched file or a file within a watched directory was read from.
+
+.TP
+.B modify
+A watched file or a file within a watched directory was written to.
+
+.TP
+.B attrib
+The metadata of a watched file or a file within a watched directory was
+modified. This includes timestamps, file permissions, extended attributes etc.
+
+.TP
+.B close_write
+A watched file or a file within a watched directory was closed, after being
+opened in writeable mode. This does not necessarily imply the file was written
+to.
+
+.TP
+.B close_nowrite
+A watched file or a file within a watched directory was closed, after being
+opened in read-only mode.
+
+.TP
+.B close
+A watched file or a file within a watched directory was closed, regardless of
+how it was opened. Note that this is actually implemented simply by listening
+for both
+.B close_write
+and
+.B close_nowrite,
+hence all close events received will be output as one of these, not
+.B CLOSE.
+
+.TP
+.B open
+A watched file or a file within a watched directory was opened.
+
+.TP
+.B moved_to
+A file or directory was moved into a watched directory. This event occurs even
+if the file is simply moved from and to the same directory.
+
+.TP
+.B moved_from
+A file or directory was moved from a watched directory. This event occurs even
+if the file is simply moved from and to the same directory.
+
+.TP
+.B move
+A file or directory was moved from or to a watched directory. Note that this is
+actually implemented simply by listening for both
+.B moved_to
+and
+.B moved_from,
+hence all close events received will be output as one or both of these, not
+.B MOVE.
+
+.TP
+.B move_self
+A watched file or directory was moved. After this event, the file or directory
+is no longer being watched.
+
+.TP
+.B create
+A file or directory was created within a watched directory.
+
+.TP
+.B delete
+A file or directory within a watched directory was deleted.
+
+.TP
+.B delete_self
+A watched file or directory was deleted. After this event the file or directory
+is no longer being watched. Note that this event can occur even if it is not
+explicitly being listened for.
+
+.TP
+.B unmount
+The filesystem on which a watched file or directory resides was unmounted.
+After this event the file or directory is no longer being watched. Note that
+this event can occur even if it is not explicitly being listened to.
+
+
+.SH EXAMPLES
+
+.SS Example 1
+Running inotifywait at the command-line to wait for any file in the `test'
+directory to be accessed. After running inotifywait, `cat test/foo' is run
+in a separate console.
+
+.nf
+% inotifywait test
+Setting up watches.
+Watches established.
+test/ ACCESS foo
+.fi
+
+.SS Example 2
+A short shell script to efficiently wait for httpd-related log messages and
+do something appropriate.
+
+.nf
+#!/bin/sh
+while inotifywait -e modify /var/log/messages; do
+ if tail -n1 /var/log/messages | grep httpd; then
+ kdialog --msgbox "Apache needs love!"
+ fi
+done
+.fi
+
+.SS Example 3
+A custom output format is used to watch `~/test'. Meanwhile, someone runs
+`touch ~/test/badfile; touch ~/test/goodfile; rm ~/test/badfile' in another
+console.
+
+.nf
+% inotifywait -m -r --format '%:e %f' ~/test
+Setting up watches. Beware: since -r was given, this may take a while!
+Watches established.
+CREATE badfile
+OPEN badfile
+ATTRIB badfile
+CLOSE_WRITE:CLOSE badfile
+CREATE goodfile
+OPEN goodfile
+ATTRIB goodfile
+CLOSE_WRITE:CLOSE goodfile
+DELETE badfile
+.fi
+
+
+.SH BUGS
+There are race conditions in the recursive directory watching code
+which can cause events to be missed if they occur in a directory immediately
+after that directory is created. This is probably not fixable.
+
+It is assumed the inotify event queue will never overflow.
+
+.SH AUTHORS
+inotifywait is written and maintained by Rohan McGovern <rohan@mcgovern.id.au>.
+
+inotifywait is part of inotify-tools. The inotify-tools website is located at:
+.I http://inotify-tools.sourceforge.net/
+
+.SH "SEE ALSO"
+inotifywatch(1), strftime(3), inotify(7)