使用linux内核inotify api的基于文件事件的任务调度器

cronif的Python项目详细描述


cronify是一个基于文件事件的任务调度程序,它使用linux内核的inotify api。如果你愿意的话,一个不起眼的cron实现。

它允许在文件事件发生时触发操作,可配置的操作参数可以是文件数据,如文件名和文件日期时间,并安排在特定时间段内运行的操作。

一旦安装,它将作为服务或守护进程运行,非常像cron本身。cronify也可以用作python库。

服务的配置是基于yaml的。

https://api.travis-ci.org/pkittenis/cronify.png?branch=master

安装

需要运行的Linux内核>;=2.6.13

$ sudo pip install cronify
$ sudo chmod +x /etc/init.d/cronifyd
# Install a /etc/cronify.yaml file as in the examples below
# Once a configuration file is in place, start the cronify daemon with the provided init script
$ sudo /etc/init.d/cronifyd start

配置示例

$ cat /etc/cronify.yaml

/tmp/testdir :name :Access log watcherrecurse :falsefilemasks :somefile.* :actions :-processFile :args:-$filename-YYYYMMDDcmd:echo
$ sudo /etc/init.d/cronifyd start
$ touch /tmp/testdir/somefile.txt
$ tail /var/log/cronify/cronify.log

cronify.cronify - Thread-1 - 2013-03-26 17:40:40,485 - INFO - Got result from action {'cmd': 'echo', 'args': ['echo', '/tmp/testdir/somefile.txt', '20130326']} - /tmp/testdir/somefile.txt 20130326

具有多个监视程序和延迟操作的更复杂配置

有关接受配置的完整列表,请参见存储库中的example.yaml

$ cat /etc/cronify.yaml

/tmp/testdir :name :Access log watcherrecurse :falsefilemasks :access_log_YYYYMMDD.* :actions :-processFile :args:-$filename-YYYYMMDDcmd:process/tmp/testdir2 :name :Other log watcherrecurse :truefilemasks :other_log_YYYYMMDD.* :actions :# Actions to perform on the file in sequence.-processFile :# Do not start action before this time. Action is queued until start_time if triggered prior to it.# This configuration setting is optionalstart_time:0800# Do not start action after this time. Action is queued until next start_time if triggered after end time# This configuration setting is optionalend_time:1000args:-$filename-YYYYMMDDcmd:process

已知限制

  • 重新启动服务时,当前排队的操作将丢失。

  • 使用recurse时,inotify仅限于监视树中n个子目录,其中n是/proc/sys/fs/inotify/max_user_watches的值。见http://linux.die.net/man/7/inotify

    用户可以通过修改/proc/sys/fs/inotify/max_user_手表来增加此限制

  • 当在nfs服务器端监视nfs目录时,inotify api只会看到nfs server生成的事件,然后是cronify本身。

    在nfs客户端监视nfs目录时,inotify根本看不到任何事件。

    换言之,如果您计划监视由nfs client创建的文件,则当前无法执行此操作。

githalytics.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java解析RSS源   java如何使用Android导航组件在某些片段中隐藏actionbar?   java中的oracle Fetch pl/sql数组返回值   java Listview未设置动画   java如何在不读取的情况下复制服务器页面中的文件   java从int[]与Integer[]转换为Set<Integer>   双击时,java jtable数据将替换为以前的结果   java无法请求sd卡访问应用程序并删除sd卡上的文件   java服务器客户端的速度取决于什么?   java有一个相当于Thymeleafs sec:authorize标签的小胡子吗?   java文件上传端点需要关闭InputStream吗?   java新意图不是从服务开始的(尝试了谷歌的所有解决方案)   java如何在不使用压缩的情况下将位图转换为ByteArray?   java堆栈内存分配是在处理器/RAM中完成的吗   java otroslogviewer批处理功能   java如何从teamcity自定义插件代码运行jar文件   java是否可以先声明数组,然后在循环中初始化它?   java Hibernate模型:设置子类的默认@manytone值