如何在目录上放置触发器

我有一个脚本扫描目录并对其中的文件进行一些维护。 另一个进程在目录中创建文件(每天10-30个文件)。

该脚本通过每日cron作业调用。 我需要的是在事件上触发脚本(每次在目录中创建一个新文件)。 我更喜欢这个,而不是增加cron工作的频率。

我怎样才能做到这一点? 是否有要安装的命令或程序?

在此先感谢您的帮助。

inoticoming

inoticoming是一个守护程序,用于监视具有Linux的inotify框架的目录,并在具有特定名称的文件放在其中时触发操作。

例如,它可用于等待.changes文件上传到目录并调用reprepro将它们放入您的存储库。

  • 无意识的手册页

incron

incron是一个“inotify cron”系统。 它的工作方式与常规cron类似,但是由文件系统事件而不是时间事件驱动。 这个包提供了两个程序,一个名为“incrond”的守护进程(类似于crond)和一个表操作符“incrontab”(如“crontab”)。

incron使用Linux Kernel inotify系统调用。

像cron一样,每个用户都可以编辑自己的incron表。

  • incrond的手册页
  • incrontab的手册页
  • icron.conf的手册页

还有一个名为iwatch的小程序 – 请参阅手册页 (此页面适用于Ubuntu精确(12.04),它有其他ubuntu版本的链接)。

iwatch具有递归监视文件夹的function(即:子文件夹)以及发送电子邮件以响应文件/目录事件。

inotify手册页位于那里

如果您更喜欢python脚本,可以使用pyinotify

值得知道的另一个实用程序是fileschanged ( 此处的手册页 ),它可以监视所选文件或目录上的文件系统事件,例如以下命令

 fileschanged -s created -t1 $PWD 

应该监视当前目录中的文件创建事件,在stdout上写入创建文件的名称,超时为1秒。

fileschanged可以递归地观看文件夹(如另一个答案所述,可以iwatch一样),与incroninoticoming不同。