tail命令是常用的unix工具,可以实时的监视文本的变化,做email的朋友最常用tail来监视日志的变化。
通过perl可以实现一个非常简单的tail,它可以监视日志的变化,并实时的打印出来。
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个小程序,就演示了如何监视不断增加的日志的方法。perl来实现这些工作,实在是太简单了!
转自: http://www.extmail.org/forum/read.php?tid=1492