Comando watch: Monitorar Saída em Intervalos

Comando watch: Monitorar Saída em Intervalos

O Que Você Vai Aprender

Resumo Rápido

  • watch comando reexecuta o comando a cada 2 segundos e atualiza a tela
  • Altere o intervalo com watch -n 5 comando (a cada 5 segundos)
  • Destaque o que mudou com watch -d comando
  • Ao usar um pipe |, envolva tudo entre aspas: watch 'ls | wc -l'

Pré-requisitos (ambiente alvo)

  • SO: Linux (Ubuntu / Debian / família RHEL, etc.)
  • watch vem no pacote procps-ng e está pré-instalado na maioria das distros
  • Não está incluído no macOS por padrão (use brew install watch se necessário)

1. O Que É o Comando watch?

Conclusão: watch reexecuta um comando dado em um intervalo fixo (2 segundos por padrão) e redesenha a saída mais recente na tela. É usado para monitorar mudanças.

Lina: Senpai, eu fico digitando ls -l repetidamente para ver se um arquivo está crescendo. Isso é exaustivo.
Veterano Linny: É exatamente para isso que o watch serve. Ele reexecuta o mesmo comando automaticamente e continua atualizando a tela, então você não precisa ficar martelando o teclado.
Lina: Ele repete automaticamente? Como eu uso?
Veterano Linny: Basta colocar watch na frente do comando que você quer monitorar. Vamos começar com a forma mais simples.

2. Uso Básico - Repetir um Comando Com watch

Conclusão: Basta escrever watch comando. Por padrão, ele executa a cada 2 segundos e mostra o intervalo, o comando e o horário em um cabeçalho no topo.

Lina: Deixa eu tentar com ls -l.
Veterano Linny: Vai em frente. Digite isto:
watch ls -l
Veterano Linny: Você deverá ver um cabeçalho como este no topo da tela:
Every 2.0s: ls -l                 host: Fri Jun  5 19:30:00 2026
Lina: "Every 2.0s" significa a cada 2 segundos, certo? E abaixo está a saída normal do ls -l!
Veterano Linny: Exatamente. A cada 2 segundos o conteúdo é atualizado para o estado mais recente. Se um arquivo for adicionado ou seu tamanho mudar, você vê a atualização ali mesmo.

O cabeçalho no topo mostra o intervalo, o comando em execução, o hostname e o horário atual. Ele também confirma que o watch ainda está ativo e em execução.

3. Como Alterar o Intervalo (opção -n)

Conclusão: Use -n segundos (ou --interval) para definir o intervalo. Por exemplo, watch -n 5 comando executa a cada 5 segundos. O mínimo é 0.1 segundos.

Lina: Dois segundos parece um pouco rápido. Posso diminuir a velocidade?
Veterano Linny: Use -n para especificar os segundos. Para cada 5 segundos:
watch -n 5 ls -l
Lina: E se eu quiser mais rápido?
Veterano Linny: Você pode usar decimais. -n 0.5 executa a cada meio segundo, até um mínimo de 0.1 segundos. Mas um intervalo muito curto executa o comando com muita frequência e usa mais CPU, então use apenas a velocidade que você realmente precisa.
watch -n 0.5 ls -l

Um intervalo curto como -n 1 executa o comando com muito mais frequência. Executar um comando pesado (como resumir um diretórioUm local que organiza arquivos. É a mesma ideia da "pasta" do Windows ou macOS. enorme) em um intervalo curto pode causar alta carga, então tenha cuidado.

4. Como Destacar o Que Mudou (opção -d)

Conclusão: -d (--differences) destaca o que mudou desde a execução anterior. -d=permanent mantém as alterações acumuladas destacadas desde a primeira iteração.

Lina: Quando a saída é longa, é difícil perceber o que mudou.
Veterano Linny: É aí que o -d ajuda. Ele destaca as partes que diferem da atualização anterior.
watch -d ls -l
Lina: As partes alteradas ficam iluminadas! Agora não vou perder nada.
Veterano Linny: Você pode ir mais além com -d=permanent. Ele mantém destacado qualquer ponto que já mudou, o que é útil quando você quer saber depois "o que mudou em algum momento enquanto eu não estava olhando."
watch -d=permanent ls -l

5. A Armadilha das Aspas Com Pipes e Redirecionamento

Conclusão: Para incluir | ou >, envolva o comando inteiro entre aspas. Sem aspas, o shellUm programa interativo que interpreta os comandos digitados e os executa. os interpreta primeiro e redireciona a saída do próprio watch.

Lina: Eu queria monitorar a contagem de linhas de um arquivo, então digitei watch ls | wc -l, mas se comportou de forma estranha.
Veterano Linny: Essa é uma armadilha clássica. Sem aspas, o shell lê como "redirecione a saída de watch ls para wc -l." Para passar o ls | wc -l inteiro para o watch, escreva assim:
watch 'ls | wc -l'
Lina: Entendi, as aspas fazem ls | wc -l ir para o watch como uma peça única.
Veterano Linny: Certo. O mesmo se aplica ao redirecionamento > e curingas como *, qualquer coisa que o shell trate de forma especial. Na dúvida, envolva o comando inteiro que você passa para o watch entre aspas simples.

Regra geral: se você usa um pipe ou símbolo especial, escreva watch 'comando inteiro'. Esquecer as aspas é o erro mais comum com o watch.

6. Ocultar o Cabeçalho, Manter Cores, Parar na Mudança

Conclusão: -t remove o cabeçalho, -c reproduz a saída colorida e -g sai no momento em que a saída muda.

Lina: Posso me livrar daquele cabeçalho "Every 2.0s..." no topo?
Veterano Linny: Sim, com -t (--no-title). Use quando quiser ver apenas a saída, de forma limpa.
watch -t ls -l
Lina: Além disso, com um comando colorido como ls --color, as cores desaparecem.
Veterano Linny: Adicione -c (--color) e o watch renderizará as cores ANSI que o comando produz.
watch -c ls --color=always
Veterano Linny: Mais um útil é -g (--chgexit). Ele sai do watch no momento em que a saída difere da execução anterior, perfeito para "me avise quando algo mudar."
watch -g ls -l

Opções comuns em um relance

Opção Significado
-n SEC Definir o intervalo (padrão 2s, mínimo 0.1s)
-d Destacar alterações desde a última execução
-d=permanent Manter alterações acumuladas destacadas
-t Remover o cabeçalho do topo
-c Reproduzir as cores ANSI do comando
-g Sair quando a saída mudar
-x Executar diretamente sem sh -c (cuidado com argumentos)

7. Como Sair do watch

Conclusão: watch continua executando até você pará-lo. Pressione Ctrl + C para encerrar a sessão e voltar ao promptUm símbolo (como $ ou #) exibido quando o shell está esperando sua entrada. normal.

Lina: Ele continua executando. Como eu paro?
Veterano Linny: Pressione Ctrl + C (segure Control e pressione C). Isso encerra o watch e retorna você ao seu prompt habitual.
Lina: Voltou! Eu estava preocupada porque ele não parava.
Veterano Linny: watch repete para sempre até você pará-lo. Quando terminar de verificar, pare com Ctrl + C e pronto.

8. Casos de Uso Comuns

Conclusão: watch brilha sempre que você quer observar um número que muda ao longo do tempo: uso de disco, processos, contagens de log, conexões de rede.

Lina: Quando eu realmente usaria isso?
Veterano Linny: Em qualquer lugar que você queira ficar de olho em mudanças. Aqui estão alguns exemplos comuns.
# Monitorar uso de disco conforme muda
watch df -h

# Monitorar a contagem de um processo especifico (aspas no pipe)
watch 'ps aux | grep nginx'

# Observar a contagem de linhas de um log crescer
watch 'wc -l /var/log/syslog'

# Monitorar contagem de conexoes de rede a cada 5 segundos
watch -n 5 'ss -tan | wc -l'
Lina: Então é a ferramenta ideal para "quero ver um número mudar ao longo do tempo."
Veterano Linny: Exatamente. Mas se você só quer acompanhar linhas de log conforme aparecem, tail -f se encaixa melhor. watch "re-fotografa a tela inteira periodicamente," enquanto tail -f "transmite novas linhas conforme aparecem." Escolha o certo para a tarefa.

Próximas Leituras