Comando watch: uso, intervalo -n, destaque -d e sair quando a saída muda
O comando watch é um comando do Linux que executa de novo um comando informado a cada 2 segundos e redesenha a saída na tela inteira do terminal. Ao acompanhar arquivos com o watch em um servidor AlmaLinux 9 enquanto eles eram alterados em outra janela, a opção -d destacou os caracteres que mudaram e a opção -g encerrou o watch depois que a saída mudou.
A saída abaixo vem de uma pasta de trabalho em um servidor AlmaLinux 9.8, executada como root; em um servidor Debian 12 foi verificada só a versão. O nome do host na linha de cabeçalho, no topo da tela, foi trocado pelo valor de exemplo server1, e os horários estão em UTC.
1️⃣ Como usar o comando watch
Escreva depois de watch o comando a ser repetido; sem opções, ele é executado a cada 2 segundos e a tela é trocada pela nova saída. Ao acompanhar o date, apareceu uma linha de cabeçalho no topo da tela e, depois de uma linha vazia, a saída do date.
watch dateEvery 2.0s: date server1: Thu Oct 29 02:28:07 2026
Thu Oct 29 02:28:07 UTC 2026O lado esquerdo da linha de cabeçalho mostra o intervalo de atualização e o comando em execução; o lado direito, o nome do host e o horário da última execução. Ao conferir a mesma tela 2 segundos depois, o horário do cabeçalho e a saída do date tinham mudado juntos.
Every 2.0s: date server1: Thu Oct 29 02:28:09 2026
Thu Oct 29 02:28:09 UTC 2026O watch continua rodando até você encerrá-lo, então ele é encerrado com Ctrl+C. Ao pressionar Ctrl+C, a tela do watch sumiu e o prompt voltou. O código de saída conferido logo depois foi 0.
echo $?0O watch serve para repetir comandos que imprimem uma vez e terminam. Para ver como o uso de CPU e memória muda em cada processo, o mais adequado é o comando top, que redesenha a própria tela.
O watch faz parte do pacote procps-ng. A versão é conferida com [watch -v]; era 3.3.17 no servidor AlmaLinux 9.8 e 4.0.2 no servidor Debian 12.
watch -vwatch from procps-ng 3.3.17watch -vwatch from procps-ng 4.0.22️⃣ Opções de intervalo e destaque do watch
Um número de segundos depois de -n muda o intervalo de atualização. Ao executar [watch -n 1 date], o lado esquerdo do cabeçalho passou para Every 1.0s.
watch -n 1 dateEvery 1.0s: date server1: Thu Oct 29 02:28:15 2026
Thu Oct 29 02:28:15 UTC 2026Segundo a página man, o intervalo não pode ser menor que 0,1 segundo, e valores menores viram 0,1 segundo. O separador decimal pode ser ponto ou vírgula.
-d destaca os caracteres que diferem da atualização anterior. Enquanto o size.log da pasta de trabalho era acompanhado com [ls -l], uma linha foi adicionada ao arquivo em outra janela.
watch -d -n 1 ls -l size.logEvery 1.0s: ls -l size.log server1: Thu Oct 29 02:28:53 2026
-rw-r--r-- 1 root root 7 Oct 29 02:28 size.logprintf 'line 2\n' >> size.logQuando o tamanho do arquivo passou de 7 para 14, tudo da coluna de tamanho até o fim da linha foi destacado. O número ganhou um dígito, então todos os caracteres depois dele andaram uma posição. Na atualização seguinte o valor ficou igual e o destaque sumiu.
Every 1.0s: ls -l size.log server1: Thu Oct 29 02:28:54 2026
-rw-r--r-- 1 root root 14 Oct 29 02:28 size.logPara continuar destacando tudo o que mudou desde a primeira execução, use [--differences=permanent] (segundo a página man).
-t remove a linha de cabeçalho e a linha vazia abaixo dela, deixando só a saída do comando.
watch -t -n 1 dateThu Oct 29 02:28:19 UTC 20263️⃣ Condições de saída e opções do comando watch
-g encerra o watch quando a saída do comando muda. É usado para esperar o conteúdo de um arquivo de status mudar antes de seguir para a próxima tarefa.
watch -g -n 1 cat status.txtEvery 1.0s: cat status.txt server1: Thu Oct 29 02:29:12 2026
runningEm outra janela, o comando abaixo mudou o conteúdo de status.txt para done.
printf 'done\n' > status.txtEntão o watch terminou, o prompt voltou e o código de saída foi 0.
echo $?0-e congela a tela quando o comando termina com um código de saída diferente de 0. Ao acompanhar com ls um arquivo que não existe na pasta de trabalho, apareceu a saída de erro do ls e, na última linha da tela, um aviso de que pressionar uma tecla encerra.
watch -e -n 1 ls nofile.txtEvery 1.0s: ls nofile.txt server1: Thu Oct 29 02:29:18 2026
ls: cannot access 'nofile.txt': No such file or directory
command exit with a non-zero status, press a key to exitO horário do cabeçalho parou no momento logo após a execução, e pressionar uma tecla encerrou o watch. Desta vez o código de saída foi 8.
echo $?8A página man descreve o código de saída 8 como um valor que inclui o caso em que o comando terminou com erro.
📌 Principais opções: resultados deste artigo
| Opção | Tarefa | Resultado neste artigo | |
|---|---|---|---|
| -n segundos | Muda o intervalo de atualização (padrão de 2 segundos) | O cabeçalho passou para Every 1.0s | |
| -d | Destaca os caracteres que diferem da atualização anterior | Com o tamanho 7 → 14, destaque daquela coluna até o fim da linha, sumiu na atualização seguinte | |
| -t | Oculta a linha de cabeçalho e a linha vazia abaixo dela | Sobrou só uma linha de saída do date | |
| -g | Encerra o watch quando a saída muda | Terminou após running → done, código de saída 0 | |
| -e | Congela a tela quando o comando termina com erro | Terminou ao pressionar uma tecla, código de saída 8 | |
| -v | Mostra as informações de versão | watch from procps-ng 3.3.17 no servidor AlmaLinux 9.8, watch from procps-ng 4.0.2 no servidor Debian 12 |
📎 Outras opções: segundo o manual oficial
| Opção | Tarefa | |
|---|---|---|
| -b | Emite um bipe quando o comando termina com um código de saída diferente de 0 | |
| -c | Interpreta códigos ANSI de cor e estilo para manter as cores da saída do comando | |
| -p | Executa a cada intervalo para que o horário de atualização não atrase | |
| -x | Executa o comando com exec em vez de sh -c, exigindo menos aspas | |
| -w | Corta linhas longas em vez de quebrá-las para a linha seguinte | |
| --differences=permanent | Continua destacando tudo o que mudou desde a primeira execução | |
| -h | Mostra a ajuda |
4️⃣ Aspas e pipes no comando watch
O watch executa o comando recebido com sh -c, então um comando que contém um pipe(|) ou $ deve ficar inteiro entre aspas simples. Ao acompanhar o número de arquivos da pasta de trabalho com [ls | wc -l], o cabeçalho mostrou o comando inteiro, com o pipe.
watch -n 1 'ls | wc -l'Every 1.0s: ls | wc -l server1: Thu Oct 29 02:30:22 2026
6Ao criar mais um arquivo em outra janela, o número passou de 6 para 7 na atualização seguinte.
printf 'c\n' > q3.txtEvery 1.0s: ls | wc -l server1: Thu Oct 29 02:30:24 2026
7Se você digitar [watch -n 1 ls | wc -l] sem aspas, o shell separa o pipe primeiro e toda a saída de tela do watch vai para o wc. Por isso, quando o comando a acompanhar tem um pipe, coloque o comando inteiro entre aspas.
O $ segue a mesma regra. Ao executar [watch -n 1 echo $$] sem aspas, o shell atual trocou primeiro $$ por um número, e esse número apareceu também no comando do cabeçalho.
watch -n 1 echo $$Every 1.0s: echo 3755802 server1: Thu Oct 29 02:29:37 2026
3755802Entre aspas simples, $$ é repassado sem mudança; por isso o cabeçalho mostrou echo $$ e cada atualização imprimiu o PID do sh recém-executado.
watch -n 1 'echo $$'Every 1.0s: echo $$ server1: Thu Oct 29 02:29:40 2026
3756270Every 1.0s: echo $$ server1: Thu Oct 29 02:29:41 2026
3756333O PID do shell atual, conferido com [echo $$], era o mesmo número que tinha ficado fixo na execução sem aspas.
echo $$3755802Valores que mudam devagar, como o uso do disco, são acompanhados com um intervalo de alguns segundos. Comando du: -s mostra só o total e -h mostra os tamanhos em unidades como K e M. Enquanto a pasta de trabalho era acompanhada com [du -sh .], adicionar 8.001 bytes a um arquivo de log em outra janela fez 28K virar 36K na atualização seguinte.
watch -n 2 du -sh .Every 2.0s: du -sh . server1: Thu Oct 29 02:30:34 2026
28K .printf '000d\n' 0 >> grow.logEvery 2.0s: du -sh . server1: Thu Oct 29 02:30:36 2026
36K .🔲 Simulador do comando watch
No simulador abaixo, execute o watch e depois altere arquivos com os chips [🖊 Outra janela] para ver você mesmo como a tela muda.
🔢 FAQ & conteúdo recomendado
Estado do sistema
Comando uptime do Linux (tempo de atividade do servidor & carga média de 1, 5 e 15 minutos)
O comando uptime mostra em uma linha há quanto tempo o servidor está ligado e a carga média de 1, 5 e 15 minutos.
Texto
Comandos head e tail do Linux
Os comandos head e tail mostram o começo e o fim de um arquivo. Para acompanhar o fim de um log que cresce, use [tail -f].
Disco
Comando df
O comando df mostra o tamanho total, o uso e o espaço livre de cada sistema de arquivos.
ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.