Relógio GNU sem apagar as saídas anteriores

Relógio GNU sem apagar as saídas anteriores

gnuwatché uma ferramenta muito útil para inspecionar a saída de um programa: ela executa o programa e mostra a saída em tela cheia a cada 2 segundos.

Às vezes, não quero que a saída anterior seja apagada, mas sim impressa linha por linha com um carimbo de data/hora. Para isso, uso scripts bash como:

while true; 
    do echo -n "`date`   "; 
    ssh ubuntu@server -o ConnectTimeout=1 "uptime" ; 
    sleep 1; 
done

Tem algumawatch-ferramenta semelhante a que pode executar um comando e exibir sua saída com um carimbo de data/hora em uma linha sem apagar a saída anterior?

Responder1

Eu diria que você encontrou isso em loops simples, mas você pode fazer várias coisas a partir daqui:

Escreva uma função para lidar com isso para você

function uberwatch {
    # call: uberwatch <interval> <command>
    while true; do
        "${@:2}";
        sleep $1;
    done
}

Você poderia alojar isso em algum lugar próximo ao seu ~/.bashrc.

Registre a saída em um arquivo, mas continue visualizando comwatch

watch "command | tee -a watchlog.log"

Você ainda veria apenas a execução mais recente, mas poderia pesquisar um registro histórico, se necessário.

Responder2

enquanto verdadeiro; fazer data >> /vat/tmp/watch.log; durma 600; ls -l nome do arquivo >> /var/tmp/watch.log; feito

Gosto do loop while mencionado por Artem acima, mas estava procurando armazenar os dados em um arquivo para poder analisá-los quando voltar, portanto, adicionei redirecionamentos para um arquivo. No meu caso, observando o arquivo a cada 10 minutos e ls -l para tamanho do arquivo

-Jay

Responder3

Eu gosto do Oliwatchsolução modificada, mas gosto da ideia de visualizar o log em tempo real, em vez de vasculhá-lo mais tarde.

Aqui está uma ideia:

watch 'echo $(date && command 2>&1 | tail -n 1) >> watchlog.log && cat watchlog.log | tail'

Explicação:

  • echoevita uma nova linha entre datee command.
  • >>anexa ao arquivo, da mesma forma, | tee -amas sem duplicar na watchsaída.
  • 2>&1combina stderr com stdout para garantir que você veja tudo, incluindo erros.
  • | tail -n 1restringe a saída à linha final (aquela que contém a datesaída) para uma visualização mais limpa em tempo real. Este pode ou não ser o seu desejo para o conteúdo do arquivo de log.

informação relacionada