Qualquer maneira de transmitir um arquivo no Linux

Qualquer maneira de transmitir um arquivo no Linux

Eu tenho uma saída de terminal que gostaria que estivesse 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 porque assiste apenas às enquetes em vez de gerar quando há atualizações e o tail não permite a rolagem.

Responder1

Dois problemas que você coloca:

assista apenas às enquetes em vez de enviar quando houver atualizações

tail -fnão faz votação. A partir da versão 7.5 do GNU Coreutils, tail -futilizará a inotifyinterface do kernel 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 à 7.5 por algum motivo, ele pesquisará uma vez por segundo. Provavelmente também pesquisa sistemas operacionais POSIX não-Linux (BSD, Solaris, etc), mas você teria que pesquisá-lo caso a caso: alguns desses sistemas operacionais usam GNU Coreutils, mas o kernel não suporta inotify; alguns deles não usam GNU Coreutils para implementação tail.

tail não permite scrollback

O lesscomando foi projetado especificamente para armazenar dados em buffer stdin(por exemplo, do tailcomando) e permitir que você role para frente e para trás. O buffer não é ilimitado, mas você pode usar opções de linha de comando para aumentar ou diminuir o buffer, bem como modificar a duração do buffer para rolagem para trás e para frente.

Então, algo como, talvez,

tail -f /var/logs | less

permitiria que você mantivesse um buffer de rolagem dos logs sem pesquisa ( tailapenas fica ocioso, sem consumir CPU até que o kernel emita 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/logsdentro de uma screensessão. Minha resposta original não levou em consideração que você deseja executar isso para que vários usuários possam ver os mesmos dados de log ao mesmo tempo. @Let_Me_Be mencionado screene então me ocorreu que essa é provavelmente sua melhor aposta.

Então, juntando minha solução e a solução de @Let_Me_Be:

screen -mdS logview -- tail -f /var/logs

Aviso: não testado. Edite se estiver errado. Mas acho que estamos perto de uma solução adequada aqui.

Agora você só precisa estar screenno modo multiusuário. Isso é um pouco complicado, então vou deixaressesite fala por si. A essência é que você precisa adicionar multiuser onao seu ~/.screenrcarquivo. Veja também oProblemas comunsna parte inferior desse link.

Agora, para os usuários visualizarem o log:

screen -rS logview

deveria fazer isso.

Responder2

Você quer um programa como screenou tmux.

informação relacionada