Dois problemas que você coloca:
watch only polls as opposed to outputting when there are updates
tail -f
não pesquisa. A partir da versão 7.5 do GNU Coreutils, tail -f
usará a interface inotify
do kernel do Linux para receber sinais do kernel indicando que o arquivo foi modificado. Se você não usa o GNU Coreutils, ou usa uma versão anterior a 7.5 por algum motivo, ele irá pesquisar uma vez por segundo. Provavelmente também pesquisa em sistemas operacionais POSIX não Linux (BSD, Solaris, etc), mas você teria que pesquisá-los caso a caso: alguns desses SOs usam GNU Coreutils, mas o kernel não suporta inotify
; alguns deles não usam o GNU Coreutils para implementar tail
.
tail doesn't allow scrollback
O comando less
é projetado especificamente para armazenar em buffer dados de stdin
(por exemplo, do comando tail
) e permite que você role para frente e para trás. O buffer não é ilimitado, mas você pode usar as opções de linha de comando para aumentar ou diminuir o buffer, bem como modificar o tempo de duração do buffer para avançar e voltar.
Então, algo como, talvez,
tail -f /var/logs | less
permitiria manter um buffer de rolagem dos logs sem pesquisa ( tail
fica ocioso sem consumir CPU até que o kernel lance um sinal informando que o arquivo foi modificado).
Se você precisar que vários usuários possam ler o mesmo buffer, basta executar tail -f /var/logs
em uma sessão screen
. Minha resposta original não levou em conta que você deseja executar isso para que vários usuários possam ver os mesmos dados de registro ao mesmo tempo. @Let_Me_Be mencionou screen
e, em seguida, ocorreu-me que essa é provavelmente a sua melhor aposta.
Então, colocando minha solução e a solução @ Let_Me_Be juntas:
screen -mdS logview -- tail -f /var/logs
Aviso: não testado. Por favor, edite se está errado. Mas acho que estamos próximos da trilha para uma solução adequada aqui.
Agora você só precisa ter screen
no modo multiusuário. Isso é um pouco complicado, então vou deixar o site falar por si. A essência é que você precisa adicionar multiuser on
ao seu arquivo ~/.screenrc
. Veja também os Problemas comuns na parte inferior desse link.
Agora, para os usuários visualizarem o registro:
screen -rS logview
deve fazer isso.