最新消息:

Inotify文件监控

Perl admin 3507浏览 0评论

最近遇到了监控日志文件实时变化的需求,我使用Perl的Linux::Inotify2模块来实现的,简单介绍一下这个模块的使用方法。
比如我们要监控文件被修改事件,捕获到事件后,就创建子进程去执行一些我们需要的操作,这里我给出最基本的代码。

#!/usr/bin/perl -w
use strict;
use Linux::Inotify2;
 
my $logFile = '/var/log/xxx.log';
 
my $inotify = Linux::Inotify2->new()
    or die "Unable to create new inotify object:$!";
 
$inotify->watch($logFile,IN_MODIFY)
    or die "Unable to watch the file:$!";
 
while(){
    my @events = $inotify->read;
    unless(@events > 0){
        print "Read data error:$!";
        last;
    }
    my $child = fork();
    die "Cannot fork:$!" unless defined $child;
    if(!$child){
        &youWantToDo("Attention,$logFile was modified!");
        exit 0;
    } else {
        wait;
    }
}
 
sub youWantToDo{
    my $msg = shift;
    print $msg . "n";
}

如果你需要监控别的事件或者要知道Linux::Inotify2的详细用法,去CPAN的官方阅读该模块的帮助文档。

转载请注明:爱开源 » Inotify文件监控

您必须 登录 才能发表评论!