发布于2026-06-29 阅读(0)
扫一扫,手机访问
inotify 是 Linux 内核内置的一套文件系统事件监控机制,能实时捕捉文件或目录的创建、删除、修改等动作。在 Debian 环境下,想把它的能力真正落地,往往需要跟现有的工具链打通。下面梳理几种最常见、也最实用的集成方式,供你参考。

inotify-tools这是最直接的方式——命令行搞定一切。inotify-tools 提供了两个主力工具:inotifywait 和 inotifywatch。安装简单,一装即用。
inotify-toolssudo apt-get update
sudo apt-get install inotify-tools
inotifywaitinotifywait 能一直盯着指定目录,一旦发生事件(比如创建、删除、修改),就可以触发后续操作。下面这个例子,每当目录里有文件变动,就会打印一条消息:
inotifywait -m /path/to/directory -e create,delete,modify |
while read path action file; do
echo "The file '$file' appeared in directory '$path' via '$action'"
done
inotifywatch如果你想统计事件的次数,inotifywatch 就派上用场了。比如,统计 60 秒内创建、删除、修改事件各发生了多少次:
inotifywatch -t -e create,delete,modify 60 /path/to/directory
python-inotify如果习惯用 Python 写脚本,那 python-inotify 库是绝佳选择。它把 inotify 的系统调用封装成了 Python 接口,用起来非常自然。
python-inotifypip install inotify
import os
from inotify_simple import INotify, flags
def main():
inotify = INotify()
watch_flags = flags.CREATE | flags.DELETE | flags.MODIFY
wd = inotify.add_watch('/path/to/directory', watch_flags)
try:
while True:
for event in inotify.read():
print(f"Event: {event.maskname} - {event.name}")
except KeyboardInterrupt:
inotify.rm_watch(wd)
inotify.close()
if __name__ == "__main__":
main()
systemd系统服务层面,systemd 也能跟 inotify 联动。思路是创建一个服务单元,把 inotifywait 命令嵌进去,一旦文件有变化就自动执行指定操作。这样做的好处是:服务可以自动重启、随系统启动,运维起来省心不少。
[Unit]
Description=Monitor File Changes
[Service]
ExecStart=/usr/bin/inotifywait -m /path/to/directory -e create,delete,modify --format '%w%f %e' | while read path action file; do echo "The file '$file' appeared in directory '$path' via '$action'"; # 在这里添加你想要执行的命令 done
Restart=always
[Install]
WantedBy=multi-user.target
sudo cp monitor-file-changes.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable monitor-file-changes.service
sudo systemctl start monitor-file-changes.service
fswatch最后提一个“老牌”工具——fswatch。它底层同样基于 inotify,但接口更简洁,跨平台兼容性也好。如果你的脚本需要跑在 macOS 或 BSD 上,fswatch 会是更统一的方案。
fswatchsudo apt-get update
sudo apt-get install fswatch
fswatchfswatch -0 /path/to/directory | while read -d '' event; do
echo "File changed: $event"
done
以上几种方式,覆盖了从命令行到 Python 脚本、从临时任务到系统级服务的常见场景。具体选哪一种,取决于你的项目形态和维护习惯。不过无论怎么选,inotify 在 Debian 上的集成都不会让人失望。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8