Voltar ao Diminua Blog

Artigo

Dominando o `watch` no Linux: Monitoramento Contínuo de Comandos e Processos

Mantenha-se informado sobre a evolução de dados e o status de processos em tempo real com este utilitário essencial.

Dominando o `watch` no Linux: Monitoramento Contínuo de Comandos e Processos

Introdução ao `watch`

No universo do Linux, a capacidade de monitorar o estado do sistema e a evolução de dados em tempo real é crucial para administradores de sistemas, desenvolvedores e qualquer profissional de TI. O comando watch se destaca como uma ferramenta simples, porém poderosa, para executar um comando repetidamente em intervalos definidos, exibindo sua saída em tela cheia. Isso permite observar mudanças sutis, acompanhar o crescimento de arquivos, monitorar o uso de recursos ou verificar o status de processos sem a necessidade de executar o comando manualmente a cada vez.

Por que usar o `watch`?

Imagine a necessidade de:

  • Acompanhar o tamanho de um arquivo que está sendo gerado em tempo real.
  • Monitorar o uso de memória ou CPU de um processo específico.
  • Verificar se um serviço está respondendo corretamente a cada poucos segundos.
  • Observar a saída de um script que está em execução contínua.

O watch simplifica todas essas tarefas, apresentando as informações de forma clara e organizada, facilitando a identificação de padrões, anomalias ou simplesmente o progresso de uma operação.

Sintaxe Básica e Opções Essenciais

A sintaxe fundamental do comando watch é:

watch [opções] comando

Vamos explorar algumas das opções mais úteis:

-n SEGUNDOS (ou --interval=SEGUNDOS): Definindo o Intervalo de Atualização

Esta é a opção mais utilizada. Ela especifica o intervalo em segundos entre cada execução do comando. O valor padrão é 2 segundos.

Exemplo: Monitorar o uso de disco a cada 5 segundos.

watch -n 5 df -h

-d (ou --differences): Destacando as Mudanças

Quando esta opção é usada, o watch destaca as diferenças entre a exibição atual e a anterior. Isso é incrivelmente útil para identificar rapidamente o que mudou.

Exemplo: Observar as mudanças no conteúdo de um arquivo de log.

watch -d tail /var/log/syslog

-t (ou --no-title): Removendo o Cabeçalho

Por padrão, o watch exibe um cabeçalho com o comando sendo executado, o intervalo e a hora. A opção -t remove este cabeçalho, o que pode ser útil em scripts ou quando você precisa de uma visualização mais limpa.

-b (ou --beep): Alerta Sonoro para Mudanças

Se houver alguma diferença detectada entre as exibições, o watch emitirá um bipe. Útil para ser notificado de mudanças importantes sem precisar olhar fixamente para a tela.

-e (ou --errexit): Saída em Caso de Erro

Se o comando executado pelo watch retornar um erro, o watch será encerrado. Isso pode ser útil em fluxos de trabalho automatizados onde um erro indica um problema que precisa ser tratado imediatamente.

Exemplos Práticos de Uso

Monitorando o Uso de Recursos do Sistema

Para verificar o uso de memória e CPU de processos em tempo real, você pode combinar watch com comandos como top ou htop (se instalado).

Exemplo com top:

watch -n 2 top -o %CPU

Este comando exibirá a saída do top, ordenado por uso de CPU, a cada 2 segundos, destacando as mudanças.

Acompanhando o Crescimento de Arquivos

Se você tem um script gerando um arquivo de log e quer ver como ele cresce, o watch com ls -l é perfeito.

Exemplo: Monitorar o tamanho de um arquivo chamado meu_log.txt no diretório atual.

watch -n 3 ls -lh meu_log.txt

Verificando a Disponibilidade de um Serviço

Para verificar se um servidor web está respondendo, você pode usar curl ou wget.

Exemplo: Testar a resposta de um servidor em http://localhost:8080 a cada 10 segundos.

watch -n 10 curl -Is http://localhost:8080

-I (ou --head) e -s (ou --silent) no curl garantem que apenas os cabeçalhos sejam retornados e que o output seja mais limpo.

Executando Comandos Múltiplos

O watch pode executar qualquer comando, incluindo aqueles que produzem múltiplas linhas de saída. Para comandos mais complexos ou que precisam ser executados em sequência, você pode usar um script shell ou o próprio shell para concatenar comandos.

Exemplo: Monitorar o espaço livre em disco e o número de processos do usuário usuario_exemplo.

watch -n 5 "df -h | grep '/$' && ps -u usuario_exemplo | wc -l"

Note o uso de aspas duplas para agrupar os comandos e o operador && para encadear a execução.

Considerações de Segurança e Boas Práticas

Embora o watch seja uma ferramenta de monitoramento e não diretamente executiva de comandos com potencial destrutivo, é importante ter cautela:

  • Comandos com Efeitos Colaterais: Evite usar o watch com comandos que modificam o sistema ou dados, a menos que você tenha total controle e compreenda as implicações. Por exemplo, executar watch -n 1 rm arquivo_temporario.txt é extremamente perigoso.
  • Permissões: Certifique-se de que o usuário executando o watch tenha as permissões necessárias para executar o comando alvo.
  • Uso de Recursos: Intervalos muito curtos (ex: -n 0 ou -n 1) podem consumir recursos desnecessários do sistema, especialmente se o comando alvo for pesado. Escolha intervalos que façam sentido para a sua necessidade.
  • Saída em Arquivos: Para monitoramento de longo prazo ou para registrar mudanças, considere redirecionar a saída de um script que usa watch para um arquivo de log, ou utilize ferramentas mais robustas como tail -f (discutido em outro artigo do Diminua) para monitorar arquivos em tempo real.

Alternativas e Ferramentas Complementares

O watch é excelente para visualização interativa, mas dependendo da necessidade, outras ferramentas podem ser mais adequadas:

  • tail -f: Ideal para monitorar arquivos de log em tempo real, exibindo novas linhas à medida que são adicionadas.
  • htop / top: Ferramentas interativas para monitoramento detalhado de processos e uso de recursos.
  • systemd-journald: Para gerenciar e consultar logs de sistema de forma mais estruturada e poderosa.
  • Ferramentas de Monitoramento de Rede (ping, mtr, nmap): Para verificar a conectividade e a saúde de redes.
  • Scripts Personalizados: Para automações mais complexas, a criação de scripts shell que utilizam watch internamente ou executam comandos periodicamente pode ser uma solução.

Conclusão

O comando watch é uma joia escondida no arsenal de qualquer usuário Linux. Sua simplicidade e eficácia em apresentar a evolução de comandos e dados em intervalos regulares o tornam indispensável para diagnóstico, monitoramento e acompanhamento de processos. Ao dominar suas opções básicas, você ganha uma visão contínua e clara do que está acontecendo em seu sistema, permitindo reações mais rápidas e decisões mais informadas.

Foto de Rafael Minguet Delgado no Pexels.