Qualquer forma de transmitir um arquivo no linux

4

Eu tenho uma saída de terminal que gostaria de estar disponível para vários usuários

atualmente algo como:

command > /var/logs

para a entrada e:

watch tail -30 /var/logs

para os terminais de entrada.

no entanto, isso é indesejável, pois observe apenas sondagens, em vez de exibir quando houver atualizações e a cauda não permitir a rolagem.

    
por 9point6 16.08.2012 / 15:19

2 respostas

8

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.

    
por 16.08.2012 / 15:30
2

Você quer um programa como screen ou tmux .

    
por 16.08.2012 / 15:29