‘Tail’ no Powershell, é possível?

Hoje participei do SQL Saturday 718, em Joinville – SC (BTW, mais um p… evento – que merece um post à parte).

Durante a palestra do Rodrigo Crespi, sobre “Linux para DBA SQL Server”, surgiu a seguinte pergunta: Como fazer, via Powershell, para acompanhar o andamento de um log, algo como o “tail -f” no Linux faz?

Depois de algumas discussões, o consenso ficou no: “Faz um ‘while true’ e fica dando um Get-Content no arquivo.” A solução me doeu no ouvido, mas foi aceito e segue o baile.

Mas sabe quando fica aquela ´pulga atrás da orelha que não vai te deixar em paz enquanto você testar? Então, eis que abro um prompt do Posh, dou uma olhada nos parâmetros e encontro o parâmetro -Wait.

Vamos ao Help e….

E Nada… 🙁

E o que a gente faz nessa hora? Google, Bing? Não… A gente testa… Por isso que dizem que manual só se lê depois que o troço estraga

Teste 1:

  • Crie no C:\temp um arquivo texto e abra ele
  • No powershell, digite:

Se tudo correr como esperado, você vai ver o que for digitado no arquivo texto, na tela do powershell… E eis que…

É, nada novamente…

“E se eu salvar o arquivo?? Será que ele exibe?”

Óóóó… Já temos alguma coisa… Se eu salvar o arquivo, então temos um retorno, o que levaria a crer que a ideia do While poderia começar a fazer algum sentido…

Mas…. E se começarmos a jogar no mesmo arquivo, uma massa de dados… Qual o comportamento?

Para isso, nada melhor que o bom e velho ping – t > c:\Teste.txt para testar…

E aí está! A cada novo registro, a linha é exibida perfeitamente… O -Wait é o cara que procurávamos de manhã!

Então, fica a dica… Para fazer via Powershell o que o tail faz, usem o Get-Content com o parâmetro -Wait.

Mas e se eu quiser filtrar o arquivo por um valor que eu esteja procurando? Tipo um tail -f teste.txt | grep “30ms”

Faça um:

E a partir daí, você pode começar a viajar nas perguntas (e eu, nas respostas…)…

Abraços!

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.