perl如何监控文件
发布网友
发布时间:2022-04-25 06:21
我来回答
共1个回答
热心网友
时间:2023-11-02 17:39
1)产生变化内容的程序例子(genlog.pl)
CODE:
use IO::Handle;
open (FD, "> /tmp/test.log") or die $!;
FD->autoflush(1);
while (1) {
my $now = time;
print FD $now, "\n";
sleep 1;
}
close FD;
这个小程序在/tmp目录下产生一个test.log的临时文件,并且每隔1秒写入当前时间的unix 时间戳
因此用普通的tail命令可以看到/tmp/test.log的内容是不断增长的。要注意的是红色的那行将
文件描述FD设置为自动冲刷(缓冲区),因此凡是写入的信息都立刻同步到磁盘,如果没有这行
那么写入的内容不能立刻反应到test.log里。
下面我们来设计一个读取这个增长内容的小程序。
2)perl版tail
CODE:
open (FD, "< /tmp/test.log") or die $!;
while (1) {
my $in = <FD>;
print $in;
}
close FD;
这个程序更简单。只要可读,将不断的读取/tmp/test.log的内容。通过这2个小程序,就演示了
如何监视不断增加的日志的方法。