Pyinotify – Monitor Filesystem Changes in Real-Time in Linux

Pyinotify is a simple yet useful Python module for monitoring filesystems changes in real-time in Linux.

As a System administrator, you can use it to monitor changes happening to a directory of interest such as web directory or application data storage directory and beyond.

Suggested Read: fswatch – Monitors Files and Directory Changes or Modifications in Linux

It depends on inotify (a Linux kernel feature incorporated in kernel 2.6.13), which is an event-driven notifier, its notifications are exported from kernel space to user space via three system calls.

The purpose of pyinotiy is to bind the three system calls, and support an implementation on top of them providing a common and abstract means to manipulate those functionalities.

In this article, we will show you how to install and use pyinotify in Linux to monitor filesystem changes or modifications in real-time.


In order to use pyinotify, your system must be running:

  1. Linux kernel 2.6.13 or higher
  2. Python 2.4 or higher

How to Install Pyinotify in Linux

First start by checking the kernel and Python versions installed on your system as follows:

# uname -r 
# python -V

Once dependencies are met, we will use pip to install pynotify. In most Linux distributions, Pip is already installed if you’re using Python 2 >=2.7.9 or Python 3 >=3.4 binaries downloaded from, otherwise, install it as follows:

# yum install python-pip      [On CentOS based Distros]
# apt-get install python-pip  [On Debian based Distros]
# dnf install python-pip      [On Fedora 22+]

Now, install pyinotify like so:

# pip install pyinotify

It will install available version from the default repository, if you are looking to have a latest stable version of pyinotify, consider cloning it’s git repository as shown.

# git clone
# cd pyinotify/
# ls
# python install

How to Use pyinotify in Linux

In the example below, I am monitoring any changes to the user tecmint’s home (/home/tecmint) directory as root user (logged in via ssh) as shown in the screenshot:

# python -m pyinotify -v /home/tecmint
Monitor Directory Changes
Monitor Directory Changes

Next, we will keep a watch for any changes to the web directory (/var/www/html/

# python -m pyinotify -v /var/www/html/

To exit the program, simply hit [Ctrl+C].

Note: When you run pyinotify without specifying any directory to monitor, the /tmp directory is considered by default.

Find more about Pyinotify on Github:

That’s all for now! In this article, we showed you how to install and use pyinotify, a useful Python module for monitoring filesystems changes in Linux.

Have you come across any similar Python modules or related Linux tools/utilities? Let us know in the comments, perhaps you can as well ask any question in relation to this article.

If you liked this article, then do subscribe to email alerts for Linux tutorials. If you have any questions or doubts? do ask for help in the comments section.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

7 thoughts on “Pyinotify – Monitor Filesystem Changes in Real-Time in Linux”

  1. I’m not interested in just printing out when a file is added to a directory, what I’m looking for is the ability to execute specific python code when that happens. This looks like a half-baked demo, not a useful library function for implementing some action that should occur when new files land. Consequently, this seems pretty pointless.

  2. Can we also check who changed file and what does he/she changed in that and send a mail to recipients? If yes please share how can we achieve that. Many Thanks!!!

  3. I did commands all in the above but I didn’t get this command.

    # python -m pyinotify -v /home/tecmint,com

    i get this error:

    [2017-04-08 17:24:37,360 pyinotify DEBUG] Start monitoring ['/home/tecmint'], (press c^c to halt pyinotify)
    [2017-04-08 17:24:37,360 pyinotify ERROR] add_watch: cannot watch /home/tecmint WD=-1, Errno=No such file or directory (ENOENT)
    ^C[2017-04-08 17:24:44,532 pyinotify DEBUG] Pyinotify stops monitoring.

    can you help me t0 resolve this issue?

    Thank you.

    • @Sushma

      Use a directory that is present on your machine, /home/tecmint is a test directory on our local system. You’ll probably run a command like so:
      # python -m pyinotify -v /path/to/your/directory


Got something to say? Join the discussion.

Have a question or suggestion? Please leave a comment to start the discussion. Please keep in mind that all comments are moderated and your email address will NOT be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.