我有一个脚本,用于扫描目录并对其中的文件进行一些维护。另一个进程在目录中创建文件(每天 10 - 30 个文件)。
该脚本通过每日 cron 作业调用。我需要的是在发生事件时(每次在目录中创建新文件时)触发脚本。我更喜欢这样,而不是增加 cron 作业的频率。
我该怎么做?是否有命令或程序需要安装?
在此先感谢您的帮助。
答案1
信息传递
inoticoming 是一个守护进程,它使用 Linux 的 inotify 框架监视目录,一旦将具有特定名称的文件放入该目录,就会触发操作。
例如,它可用于等待 .changes 文件上传到目录并调用 reprepro 将它们放入您的存储库。
因克龙
incron 是一个“inotify cron”系统。它的工作方式与常规 cron 类似,但由文件系统事件而不是时间事件驱动。此软件包提供了两个程序,一个名为“incrond”(类似于 crond)的守护进程和一个表操作器“incrontab”(类似于“crontab”)。
incron 使用 Linux 内核 inotify 系统调用。
与 cron 类似,每个用户都可以编辑自己的 incron 表。
答案2
还有一个小程序叫iwatch
-查看手册页(本页面适用于 Ubuntu precise (12.04),它包含指向其他 Ubuntu 版本的链接)。
iwatch
可以递归监视文件夹(即子文件夹)并根据文件/目录事件发送电子邮件。
答案3
另一个值得了解的实用程序是fileschanged
(手册页在这里),可以监视选定文件或目录的文件系统事件,例如以下命令
fileschanged -s created -t1 $PWD
stdout
应该监视当前目录中的文件创建事件,并在 1 秒超时内写入创建文件的名称。
fileschanged
可以递归地监视文件夹(如iwatch
另一个答案中所述),与incron
和不同inoticoming
。