Back to Unix_Utilities

See Also Cronrsync

incron

incron是inotify cron system的合体,意思就是基于inotify的cron系统:包含一个后台守护进程(incrond)和一个事件编辑器(incron)。

查看linux内核版本,若版本为2.6.13+,则说明内核支持inotify。

1. Installation

0.5.9目录递归有问题,建议装下面的新版本

## https://centos.pkgs.org/6/epel-x86_64/incron-0.5.9-1.el6.x86_64.rpm.html
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
yum install incron

## https://centos.pkgs.org/6/psychotic-ninja-x86_64/incron-0.5.12-3.el6.psychotic.x86_64.rpm.html
wget http://packages.psychotic.ninja/6/base/x86_64/RPMS//incron-0.5.12-3.el6.psychotic.x86_64.rpm
rpm -hiv incron-0.5.12-3.el6.psychotic.x86_64.rpm

1.1. Running Rsync as a Daemon

/etc/init.d/incrond start

2. Running

2.1. 添加触发任务

incrontab -e 编辑任务;: wq 保存

# 测试: 所有事件
/tmp/mon/all IN_ALL_EVENTS /tmp/incron-test.sh "$@ $% $#"
# 测试多事件:IN_MODIFY,IN_CREATE,IN_DELETE
/tmp/mon/some IN_MODIFY,IN_CREATE,IN_DELETE echo $@/$# | logger

$ cat /tmp/incron-test.sh
#!/bin/sh

echo -e "path: $1 op: $2 \t file: $3"

$ chmod 755 /tmp/incron-test.sh

2.2. 格式说明

<path> <event> <command>

<event> 对象事件,多个事件用逗号”,”隔开。可使用的监控事件如下:

    IN_ACCESS: 文件被访问;

    IN_MODIFY: 文件被修改;
    IN_ATTRIB: 文件属性被修改,如 chmod、chown、touch 等;
    IN_CLOSE_WRITE: 可写文件被关闭;

    IN_CLOSE_NOWRITE: 不可写文件被关闭;
    IN_CLOSE: 文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) ;

    IN_OPEN: 文件被打开;
    IN_MOVED_FROM: 文件被移走,如 mv ;
    IN_MOVED_TO: 文件被移来,如 mv、cp ;
    IN_MOVE: 文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO);

    IN_CREATE: 创建新文件;
    IN_DELETE: 文件被删除,如 rm ;
    IN_DELETE_SELF: 自删除,即一个可执行文件在执行时删除自己;
    IN_MOVE_SELF: 自移动,即一个可执行文件在执行时移动自己;
    IN_ONESHOT: 仅监控一次事件;

    IN_ONLYDIR: 只监控目录;

    IN_UNMOUNT: 宿主文件系统被 umount;

    IN_ALL_EVENTS: all of the above events;

    IN_DONT_FOLLOW: Don't dereference pathname if it is a symbolic link;

<command> 系统命令或脚本(测试发现,在命令中使用’重定向’无效,只能在脚本中使用);还可以使用下面的这些变量:

    $@:代表<path>,即监控对象;
    $#:发生系统事件的文件/目录(例如监控某文件夹,其下的某文件发生了变化,那么$#就代表了该文件名);
    $%:代表<event>,即发生的事件(事件代码);
    $&: 代表<event>,即发生的事件(事件数字编号);

2.3. 查看运行结果

tail -f /var/log/cron

3. inotify-tools

inotifywait 和 inotifywatch 的使用

4. Reference

MainWiki: incron (last edited 2017-04-29 06:04:44 by twotwo)