监视指定文件/文件夹的更改并根据这些更改激发命令的守护程序
fs-watcher的Python项目详细描述
Overview
Watcher是监视指定文件/文件夹的更改和 根据这些更改激发命令。它类似于 incron然而,配置使用更简单的 读取ini文件而不是纯文本文件。不像印克伦,它也可以 递归地监视目录。
它是用python编写的,更容易被破解。
这个fork是使用python守护进程的PEP3143实现重写代码,并具有以下附加功能:
- 异步命令执行,允许对单个作业同时执行多个命令副本
- 将命令输出捕获到单独的日志文件
- 通过正则表达式排除监视文件
- 在成功/失败命令完成时执行操作。
Requirements
Watcher同时支持Python2.7和Python3.x。
在debian上安装依赖项:
sudo apt-get install python-pyinotify python-daemon python-lockfile python-chardet python-future
sudo apt-get install python3-pyinotify python3-daemon python3-lockfile python3-chardet python3-future
在gentoo上安装依赖项:
emerge -av dev-python/pyinotify dev-python/python-daemon dev-python/lockfile dev-python/chardet dev-python/future
pip将自动安装依赖项。
Installation
Debian
从GitHub releases page下载最新的deb包,并用dpkg安装它。
sudo dpkg -i fs-watcher_X.Y.Z-0_all.deb
除了Watcher本身之外,它还将安装:
- 示例配置文件到/etc/watcher.ini
- systemd服务fs-watcher(处于禁用状态)。
若要开始使用Watcher,必须更改/etc/watcher.ini以满足您的需要,并启用/启动fs-watcher服务。
Pip
全系统使用pip:
sudo pip install fs-watcher
sudo pip3 install fs-watcher
此命令将安装:
- 用于Watcher 的python模块
- 配置文件示例
- 启动脚本示例
- 启动Watcher 的可执行文件
使用以下命令检查准确位置:
pip show -f fs-watcher
有一些启动脚本的示例。使用init系统手册正确安装它们。在使用前检查/修复示例中可执行文件Watcher的路径,默认情况下假定为/usr/sbin/watcher。
对于systemd:
cp share/init/fs-watcher.service /etc/systemd/system/fs-watcher.service
systemctl daemon-reload
systemctl enable fs-watcher
systemctl start fs-watcher
对于Sysv:
cp share/init/fs-watcher.sysvinit /etc/init.d/fs-watcher update-rc.d fs-watcher defaults /etc/init.d/fs-watcher start
对于OpenRC:
cp share/init/fs-watcher.openrc /etc/init.d/fs-watcher rc-update add fs-watcher default /etc/init.d/fs-watcher start
Configuration
检查提供的watcher.ini文件以获取示例作业配置。配置文件应该位于/etc/watcher.ini或~/.watcher.ini中。还可以使用--config选项将配置文件的路径指定为命令行参数。
如果编辑ini文件,则必须重新启动守护程序才能重新加载配置。
Usage
usage: watcher [-h] [--version] [-c CONFIG] [-v] {start,stop,restart,debug} positional arguments: {start,stop,restart,debug} What to do. optional arguments: -h, --help show this help message and exit --version show program's version number and exit -c CONFIG, --config CONFIG Path to the config file (default: None) -v, --verbose verbose output
Increasing the amount of inotify watchers
inotify观察程序的最大数量是有限制的。如果此限制不足以监视所有作业,则必须增加该限制,Watcher才能正常工作。当面对此限制时,您可以在日志中找到以下错误:
add_watch: cannot watch /...... WD=-1, Errno=No space left on device (ENOSPC)
如果您运行的是debian、redhat或其他类似的linux发行版,请在终端中运行以下命令以增加此限制:
echo fs.inotify.max_user_watches=524288| sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Increasing the amount of queued events
有最大排队事件数的限制。如果此限制不足以监视所有作业,则必须增加该限制,Watcher才能正常工作。面对此限制时,您可以在日志中找到以下警告:
pyinotify - WARNING - Event queue overflowed.
如果您运行的是debian、redhat或其他类似的linux分配,在终端中运行以下命令以增加此限制:
echo fs.inotify.max_queued_events=65536| sudo tee -a /etc/sysctl.conf && sudo sysctl -p