Você sempre pode implementar o tail -f
(bem aqui, a menos que descomente o seek()
, mais como tail -n +1 -f
ao despejarmos o arquivo inteiro) manualmente com perl
, por exemplo:
perl -e '
$| = 1;
# seek STDIN, 0, 2; # uncomment if you want to skip the text that is
# already there. Or if using the ksh93 shell, add
# a <((EOF)) after < your-file
while (1) {
if ($_ = <STDIN>) {
print; $t = 0
} else {
print "\n" if $t == 3;
# and a line of "-"s after 10 seconds:
print "-" x 72 . "\n" if $t == 10;
sleep 1;
$t++;
}
}' < your-file
Ou deixe tail -f
fazer o tailing e use perl
para inserir as novas linhas se não houver entrada por 3 segundos:
tail -f file | perl -pe 'BEGIN{$SIG{ALRM} = sub {print "\n"}} alarm 3'
Eles assumem que a saída em si não é retardada (como quando a saída vai para um canal que não é lido ativamente).