How to use the command inotifywait (with examples)
- Linux
- December 25, 2023
The inotifywait command is a Linux utility that waits for changes to one or more files or directories. It can be used to monitor file events and perform actions based on those events. This article will provide examples of different use cases for the inotifywait command.
Use case 1: Watch a specific file for events, exiting after the first one
Code:
inotifywait path/to/file
Motivation: This use case is helpful when you want to monitor a specific file for any changes and exit the command once the first event occurs. It can be useful for quickly checking if a particular file is being modified or accessed.
Explanation:
- inotifywait: The command name.
- path/to/file: The path to the specific file to be monitored.
Example output:
path/to/file OPEN
Use case 2: Continuously watch a specific file for events without exiting
Code:
inotifywait --monitor path/to/file
Motivation: In this use case, you can continuously monitor a specific file for any changes without exiting the command. It is useful when you need to keep track of changes happening to a file in real-time.
Explanation:
- inotifywait: The command name.
- –monitor: Option to continuously monitor the file.
- path/to/file: The path to the specific file to be monitored.
Example output:
path/to/file MODIFY
path/to/file CREATE
Use case 3: Watch a directory recursively for events
Code:
inotifywait --monitor --recursive path/to/directory
Motivation: This use case allows you to recursively watch a directory for any changes happening to its files and subdirectories. It is useful when you want to monitor an entire directory tree.
Explanation:
- inotifywait: The command name.
- –monitor: Option to continuously monitor the directory.
- –recursive: Option to watch the directory recursively, including its subdirectories.
- path/to/directory: The path to the directory to be monitored.
Example output:
path/to/directory/ FILE_MOVED_FROM
path/to/directory/subdirectory FILE_MOVED_TO
Use case 4: Watch a directory for changes, excluding files whose names match a regular expression
Code:
inotifywait --monitor --recursive --exclude "regular_expression" path/to/directory
Motivation: This use case allows you to watch a directory for changes but excludes files whose names match a specific regular expression. It is useful when you want to ignore certain files while monitoring a directory.
Explanation:
- inotifywait: The command name.
- –monitor: Option to continuously monitor the directory.
- –recursive: Option to watch the directory recursively, including its subdirectories.
- –exclude “regular_expression”: Option to exclude files whose names match the given regular expression.
- path/to/directory: The path to the directory to be monitored.
Example output:
path/to/directory/file.txt MODIFY
path/to/directory/excluded_file.txt IGNORED_EVENT
Use case 5: Watch a file for changes, exiting when no event occurs for 30 seconds
Code:
inotifywait --monitor --timeout 30 path/to/file
Motivation: This use case allows you to monitor a file for changes and automatically exit the command if no events occur within a specified timeout period. It is useful when you want to monitor a file for a certain period and then perform an action based on the events received.
Explanation:
- inotifywait: The command name.
- –monitor: Option to continuously monitor the file.
- –timeout 30: Option to exit the command if no events occur within 30 seconds.
- path/to/file: The path to the specific file to be monitored.
Example output:
path/to/file MODIFY
path/to/file CLOSE_WRITE
Use case 6: Only watch a file for file modification events
Code:
inotifywait --event modify path/to/file
Motivation: This use case allows you to watch a file for specific events, in this case, only file modification events. It is helpful when you only want to track modifications made to a file without being notified of other events.
Explanation:
- inotifywait: The command name.
- –event modify: Option to watch for file modification events.
- path/to/file: The path to the specific file to be monitored.
Example output:
path/to/file MODIFY
Use case 7: Watch a file printing only events, and no status messages
Code:
inotifywait --quiet path/to/file
Motivation: This use case allows you to watch a file for events but suppresses all status messages. It is useful when you only want to see the event outputs without any additional information.
Explanation:
- inotifywait: The command name.
- –quiet: Option to suppress all status messages.
- path/to/file: The path to the specific file to be monitored.
Example output:
MODIFY
CREATE
Use case 8: Run a command when a file is accessed
Code:
inotifywait --event access path/to/file && command
Motivation: This use case allows you to execute a command whenever a file is accessed. It is useful when you want to perform certain actions whenever a specific file is being accessed.
Explanation:
- inotifywait: The command name.
- –event access: Option to watch for file access events.
- path/to/file: The path to the specific file to be monitored.
- command: The command to be executed when the file is accessed.
Example output:
path/to/file ACCESS
Command output
Conclusion:
The inotifywait command is a versatile tool for monitoring file events on Linux systems. It provides various options to customize the monitoring behavior according to different use cases. By understanding the different use cases and examples provided, you can effectively utilize inotifywait to watch files and directories for changes and perform actions based on those events.