====== BASH - Directories - Monitor a directory for changes - Using incron ======
**incron** is like cron but instead of time-based events, the events are based on file notifications.
----
===== Install incron =====
sudo apt install incron
----
===== Change Permissions =====
Add users to the **/etc/incron.allow** file who are allowed to use incron.
peter
**NOTE:** One user per line.
**/etc/incron.deny** can also be used to specifically prevent usage of incron by a user.
----
===== Monitor =====
Edit the incron table:
incrontab -e
and populate with:
/etc/apache2/apache2.conf IN_MODIFY /usr/sbin/service apache2 stop
/home/peter/some_dir_to_watch IN_MODIFY echo "$$ $@ $# $% $&"
**NOTE:** This monitors the directory for changes and will perform the echo passing along some parameters.
The format is very picky; use spaces, not tabs!
* The format is **path mask command**.
Parameters can include:
* **$$**: Prints a dollar sign.
* **$@**: The watched filesystem path.
* **$#**: The event-related file name.
* **$%**: The event flags/time (textually).
* **$&**: The event flags.time (numerically).
Events to monitor include:
* **IN_ACCESS**: If a file is accessed or read.
* **IN_ATTRIB**: If metadata of a file change (e.g. timestamps, permissions).
* **IN_CLOSE_WRITE**: If a file opened for writing is closed.
* **IN_CLOSE_NOWRITE**: If a file or directory not opened for writing is closed.
* **IN_CREATE**: If a file or directory is created in a watched directory.
* **IN_DELETE**: If a file or directory is deleted from a watched directory.
* **IN_DELETE_SELF**: If a watched file or directory is deleted (or moved to a different filesystem).
* **IN_MODIFY**: If a file was modified.
* **IN_MOVE_SELF**: If a watched file or directory is moved within the filesystem.
* **IN_MOVED_FROM**: If a file or directory is moved out of the watched directory.
* **IN_MOVED_TO**: A file or directory is moved to the watched directory.
* **IN_OPEN**: A watched file or directory is opened.
**IMPORTANT:** incron is not capable of watching sub-directories.
Only files within the path will be monitored.
If sub-directories need to be monitored, they must be given their own entry.
----
===== List the incron table =====
incrontab -l