文件更改时执行脚本/程序

cyp*_*ous 7 linux unix debian ubuntu

有没有办法在文件上设置触发器之类的东西,以便每次更改文件时都会执行脚本或程序?

我只在 shell 脚本中找到了一种机制,但想知道是否有基于操作系统的机制(这样我就不必手动运行后台程序)。基于操作系统的解决方案将是每隔几秒钟运行一次的 cron 作业,但这对我来说似乎不是一个合适的解决方案。

它适用于 Debian,顺便说一句。

感谢帮助。

aki*_*ira 8

您的选择之一是linux 内核的inotify子系统:

inotify 是一个 Linux 内核子系统,用于扩展文件系统以通知文件系统的更改,并将这些更改报告给应用程序

但由于inotify是内核领域,您需要在用户空间中使用一些东西才能实际使用它:

inotify cron 守护进程 (incrond) 是一个守护进程,它监视文件系统事件并执行在系统和用户表中定义的命令。它的使用通常类似于 cron(8)。

Gamin 是一个文件和目录监控系统,它独立实现了 FAM 的一个子集,即文件更改监控器。作为服务运行,它允许检测对文件或目录的修改。gam_server 充当 Gamin 的守护进程。

inocoming - 当文件到达传入目录时触发操作

在 askubuntu 上有一个类似问题的答案:

https://askubuntu.com/a/43848/1223