Comando watch: Monitorar Saida em Intervalos

Comando watch: Monitorar Saida em Intervalos

O Que Voce Vai Aprender

  • Como reexecutar o mesmo comando em um intervalo fixo com watch
  • As duas opcoes mais comuns: -n (intervalo) e -d (destacar alteracoes)
  • Como evitar a armadilha das aspas ao usar pipes ou redirecionamento
  • Como sair do watch corretamente (Ctrl + C)

Resumo Rapido

  • 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'

Pre-requisitos (ambiente alvo)

  • SO: Linux (Ubuntu / Debian / familia RHEL, etc.)
  • watch vem no pacote procps-ng e esta pre-instalado na maioria das distros
  • Nao esta incluido no macOS por padrao (use brew install watch se necessario)

1. O Que E o Comando watch?

Conclusao: watch reexecuta um comando dado em um intervalo fixo (2 segundos por padrao) e redesenha a saida mais recente na tela. E usado para monitorar mudancas.

Lina: Senpai, eu fico digitando ls -l repetidamente para ver se um arquivo esta crescendo. Isso e exaustivo.
Veterano Linny: E exatamente para isso que o watch serve. Ele reexecuta o mesmo comando automaticamente e continua atualizando a tela, entao voce nao precisa ficar martelando o teclado.
Lina: Ele repete automaticamente? Como eu uso?
Veterano Linny: Basta colocar watch na frente do comando que voce quer monitorar. Vamos comecar com a forma mais simples.

2. Uso Basico - Repetir um Comando Com watch

Conclusao: Basta escrever watch comando. Por padrao, ele executa a cada 2 segundos e mostra o intervalo, o comando e o horario em um cabecalho no topo.

Lina: Deixa eu tentar com ls -l.
Veterano Linny: Vai em frente. Digite isto:
watch ls -l
Veterano Linny: Voce devera ver um cabecalho 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 esta a saida normal do ls -l!
Veterano Linny: Exatamente. A cada 2 segundos o conteudo e atualizado para o estado mais recente. Se um arquivo for adicionado ou seu tamanho mudar, voce ve a atualizacao ali mesmo.

O cabecalho no topo mostra o intervalo, o comando em execucao, o hostname e o horario atual. Ele tambem confirma que o watch ainda esta ativo e em execucao.

3. Como Alterar o Intervalo (opcao -n)

Conclusao: Use -n segundos (ou --interval) para definir o intervalo. Por exemplo, watch -n 5 comando executa a cada 5 segundos. O minimo e 0.1 segundos.

Lina: Dois segundos parece um pouco rapido. 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 rapido?
Veterano Linny: Voce pode usar decimais. -n 0.5 executa a cada meio segundo, ate um minimo de 0.1 segundos. Mas um intervalo muito curto executa o comando com muita frequencia e usa mais CPU, entao use apenas a velocidade que voce realmente precisa.
watch -n 0.5 ls -l

Um intervalo curto como -n 1 executa o comando com muito mais frequencia. Executar um comando pesado (como resumir um diretorio enorme) em um intervalo curto pode causar alta carga, entao tenha cuidado.

4. Como Destacar o Que Mudou (opcao -d)

Conclusao: -d (--differences) destaca o que mudou desde a execucao anterior. -d=permanent mantem as alteracoes acumuladas destacadas desde a primeira iteracao.

Lina: Quando a saida e longa, e dificil perceber o que mudou.
Veterano Linny: E ai que o -d ajuda. Ele destaca as partes que diferem da atualizacao anterior.
watch -d ls -l
Lina: As partes alteradas ficam iluminadas! Agora nao vou perder nada.
Veterano Linny: Voce pode ir mais alem com -d=permanent. Ele mantem destacado qualquer ponto que ja mudou, o que e util quando voce quer saber depois "o que mudou em algum momento enquanto eu nao estava olhando."
watch -d=permanent ls -l

5. A Armadilha das Aspas Com Pipes e Redirecionamento

Conclusao: Para incluir | ou >, envolva o comando inteiro entre aspas. Sem aspas, o shell os interpreta primeiro e redireciona a saida do proprio watch.

Lina: Eu queria monitorar a contagem de linhas de um arquivo, entao digitei watch ls | wc -l, mas se comportou de forma estranha.
Veterano Linny: Essa e uma armadilha classica. Sem aspas, o shell le como "redirecione a saida 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 peca unica.
Veterano Linny: Certo. O mesmo se aplica ao redirecionamento > e curingas como *, qualquer coisa que o shell trate de forma especial. Na duvida, envolva o comando inteiro que voce passa para o watch entre aspas simples.

Regra geral: se voce usa um pipe ou simbolo especial, escreva watch 'comando inteiro'. Esquecer as aspas e o erro mais comum com o watch.

6. Ocultar o Cabecalho, Manter Cores, Parar na Mudanca

Conclusao: -t remove o cabecalho, -c reproduz a saida colorida e -g sai no momento em que a saida muda.

Lina: Posso me livrar daquele cabecalho "Every 2.0s..." no topo?
Veterano Linny: Sim, com -t (--no-title). Use quando quiser ver apenas a saida, de forma limpa.
watch -t ls -l
Lina: Alem disso, com um comando colorido como ls --color, as cores desaparecem.
Veterano Linny: Adicione -c (--color) e o watch renderizara as cores ANSI que o comando produz.
watch -c ls --color=always
Veterano Linny: Mais um util e -g (--chgexit). Ele sai do watch no momento em que a saida difere da execucao anterior, perfeito para "me avise quando algo mudar."
watch -g ls -l

Opcoes comuns em um relance

Opcao Significado
-n SEC Definir o intervalo (padrao 2s, minimo 0.1s)
-d Destacar alteracoes desde a ultima execucao
-d=permanent Manter alteracoes acumuladas destacadas
-t Remover o cabecalho do topo
-c Reproduzir as cores ANSI do comando
-g Sair quando a saida mudar
-x Executar diretamente sem sh -c (cuidado com argumentos)

7. Como Sair do watch

Conclusao: watch continua executando ate voce para-lo. Pressione Ctrl + C para encerrar a sessao e voltar ao prompt normal.

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

8. Casos de Uso Comuns

Conclusao: watch brilha sempre que voce quer observar um numero que muda ao longo do tempo: uso de disco, processos, contagens de log, conexoes de rede.

Lina: Quando eu realmente usaria isso?
Veterano Linny: Em qualquer lugar que voce queira ficar de olho em mudancas. Aqui estao 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: Entao e a ferramenta ideal para "quero ver um numero mudar ao longo do tempo."
Veterano Linny: Exatamente. Mas se voce so 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.

Proximas Leituras