根据solution provided in perldoc,我试图模仿tail -f
,但它没有按预期工作。以下代码可以首次打印所有行,但不会附加新行。你能详细说明我是否遗漏了这里的任何东西。
#!/usr/bin/perl
open (LOGFILE, "aa") or die "could not open file reason $! \n";
for (;;)
{
seek(LOGFILE,0,1); ### clear OF condition
for ($curpos = tell(LOGFILE); <LOGFILE>; $curpos = tell(LOGFILE))
{
print "$_ \n";
}
sleep 1;
seek(LOGFILE,$curpos,0); ### Setting cursor at the EOF
}
答案 0 :(得分:1)
对我来说很好。你如何更新"aa"
?
如果buffered
写入"aa"
,您将无法立即看到数据。
您可以在不同的终端中尝试以下操作,并检查您是否看到任何更新。
while ( 1 )
echo "test" >> aa
end
如果您使用perl更新aa
,请查看有关缓冲的this部分以及如何禁用。