---
author: Aaron Kili
category: 技术
comments_data:
- date: '2017-04-13 13:37:37'
  message: 好东西
  postip: 58.246.173.162
  username: 粱小无拆 [QQ Browser 9.6|Windows 7]
- date: '2017-04-14 10:50:23'
  message: 只能监视, 不能拦截处理, 有可以拦截磁盘IO操作的工具嘛?
  postip: 211.136.253.180
  username: 来自广东广州的 Chrome 55.0|GNU/Linux 用户
count:
  commentnum: 2
  favtimes: 5
  likes: 0
  sharetimes: 0
  viewnum: 8072
date: '2017-04-13 11:53:23'
editorchoice: false
excerpt: "Pyinotify 是一个简单而有用的 Python 模块，它可用于在 Linux 中实时监控文件系统更改。\r\n作为一名系统管理员，你可以用它来监视你感兴趣的目录的更改，如
  Web 目录或程序数据存储目录及其他目录。"
fromurl: http://www.tecmint.com/pyinotify-monitor-filesystem-directory-changes-in-linux/
id: 8397
islctt: true
largepic: /images/p/201704/13/115317spul9psb2pzp7q5b.jpg
permalink: /article-8397-1.html
pic: /images/p/201704/13/115317spul9psb2pzp7q5b.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: "Pyinotify 是一个简单而有用的 Python 模块，它可用于在 Linux 中实时监控文件系统更改。\r\n作为一名系统管理员，你可以用它来监视你感兴趣的目录的更改，如
  Web 目录或程序数据存储目录及其他目录。"
tags:
- pyinotify
- inotify
thumb: false
title: pyinotify：在 Linux 中实时监控文件系统更改
titlepic: true
translator: geekpi
updated: '2017-04-13 11:53:23'
---

`Pyinotify` 是一个简单而有用的 Python 模块，它可用于在 Linux 中实时[监控文件系统更改](http://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/)。


作为一名系统管理员，你可以用它来监视你感兴趣的目录的更改，如 Web 目录或程序数据存储目录及其他目录。


![](/images/p/201704/13/115317spul9psb2pzp7q5b.jpg)


**建议阅读：** [fswatch - 监控 Linux 中的文件和目录更改或修改](http://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/)


它依赖于 `inotify`（在内核 2.6.13 中纳入的 Linux 内核功能），它是一个事件驱动的通知程序，其通知通过三个系统调用从内核空间导出到用户空间。


`pyinotiy` 的目的是绑定这三个系统调用，并在其上提供了一个通用和抽象的方法来操作这些功能。


在本文中，我们将向你展示如何在 Linux 中安装并使用 `pyinotify` 来实时监控文件系统更改或修改。


#### 依赖


要使用 `pyinotify`，你的系统必须运行：


1. Linux kernel 2.6.13 或更高
2. Python 2.4 或更高


### 如何在 Linux 中安装 Pyinotify


首先在系统中检查内核和 Python 的版本：



```
# uname -r 
# python -V

```

一旦依赖满足，我们会使用 `pip` 安装 `pynotify`。在大多数 Linux 发行版中，如果你使用的是从 python.org 下载的 **Python 2 （>= 2.7.9）** 或者 **Python 3（ >=3.4）** 的二进制，那么 `pip` 就已经安装了，否则，就按如下安装：



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

```

现在安装 `pyinotify`：



```
# pip install pyinotify

```

它会从默认仓库安装可用的版本，如果你想要最新的稳定版，可以按如下从 git 仓库 clone 下来：



```
# git clone https://github.com/seb-m/pyinotify.git
# cd pyinotify/
# ls
# python setup.py install

```

### 如何在 Linux 中使用 pyinotify


在下面的例子中，我以 root 用户（通过 ssh 登录）监视了用户 tecmint 的家目录（`/home/tecmint`）下的改变，如截图所示：



```
# python -m pyinotify -v /home/tecmint

```

![Monitor Directory Changes](/images/p/201704/13/115326wh2ia8s82sj44sn4.png)


*监视目录更改*


接下来，我会观察到任何 web 目录 （`/var/www/html/tecmint.com`） 的更改：



```
# python -m pyinotify -v /var/www/html/tecmint.com

```

要退出程序，只要按下 `Ctrl+C`。


**注意**：当你在运行 `pyinotify` 时如果没有指定要监视的目录，`/tmp` 将作为默认目录。


可以在 Github 上了解更多 Pyinotify 信息：<https://github.com/seb-m/pyinotify>。


就是这样了！在本文中，我们向你展示了如何安装及使用 `pyinotify`，一个在 Linux 中监控文件系统更改的有用的 Python 模块。


你有遇到类似的 Python 模块或者相关的 [Linux 工具/小程序](http://tecmint.com/tag/commandline-tools)么？请在评论中让我们了解，或许你也可以询问与这篇文章相关的问题。




---


作者简介：


Aaron Kili 是 Linux 和 F.O.S.S 爱好者，将来的 Linux 系统管理员和网络开发人员，目前是 TecMint 的内容创作者，他喜欢用电脑工作，并坚信分享知识。




---


via: <http://www.tecmint.com/pyinotify-monitor-filesystem-directory-changes-in-linux/>


作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[geekpi](https://github.com/geekpi) 校对：[jasminepeng](https://github.com/jasminepeng)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出