Como executar um programa periodicamente usando o comando Watch no Linux

Às vezes, você precisa executar repetidamente um comando ou programa para monitorar vários aspectos do seu sistema, como processos em andamento, uso de espaço em disco ou logins de usuários. O comando watch do Linux permite automatizar essas tarefas sem ter que executá-las manualmente repetidas vezes.

Usando este comando, você pode monitorar as atividades do sistema em tempo real, como logins de usuários, status da rede, uso de memória e CPU, espaço em disco, etc. Vamos ver como usar o comando watch no Linux.

Qual é o comando Watch?

O comando watch Linux executa um comando ou programa especificado repetidamente, em intervalos regulares, e exibe sua saída no terminal. Isso permite observar as alterações na saída em tempo real. Ele atualiza a saída a cada intervalo, substituindo a saída anterior do comando. Por padrão, o comando se repete a cada dois segundos e continua até que você o interrompa manualmente usando Ctrl + C.

  Last Light Redux no Linux

Assistir à sintaxe do comando

A sintaxe do comando watch é:

 watch options <command> 

Existem várias opções de linha de comando disponíveis para uso com o comando watch. Se você executar o comando watch sem nenhuma opção, ele executará o comando especificado a cada dois segundos. Por exemplo, o seguinte mostrará a saída do comando ls:

 watch ls -l ~/ 

A saída mostrará as alterações na listagem de diretórios se um arquivo for criado, excluído ou alterado de tamanho, enquanto atualiza a saída a cada dois segundos.

Execute um comando a cada X segundos usando watch

Você pode alterar o intervalo de atualização do comando watch. Isso significa que você pode dizer ao comando watch para esperar x segundos antes de repetir o comando. Para alterar o intervalo de atualização, use a opção -n seguida do intervalo de tempo em segundos.

 watch -n  

Por exemplo, para executar um comando a cada 5 segundos, execute:

 watch -n 5 <command> 

Destacar alterações entre atualizações

O comando watch substitui sua saída em cada atualização. Usando a opção -d, você também pode destacar as alterações entre a saída anterior e a atualizada.

 watch -d 

Ocultar cabeçalho na saída do comando watch

Por padrão, o comando watch exibe um cabeçalho na parte superior de cada saída que contém o intervalo de atualização, o nome do comando e a data e hora atuais do sistema. Você pode retirar o cabeçalho da saída usando a opção -t:

 watch -t <command> 

Tocar bips em caso de erro

Quando um processo Linux termina a execução, ele retorna um código de saída. Por convenção, o valor é 0 em caso de sucesso e diferente de zero para representar um erro. A opção -b do comando watch emite um sinal sonoro se o comando retornar uma saída diferente de zero.

  Como usar o comando stat no Linux

Digamos que você queira monitorar sshd.service e ser notificado quando o serviço for interrompido; você usaria:

 watch -b sudo systemctl status sshd.service 

Este comando emitirá bipes quando o serviço for interrompido. O bipe irá parar quando o serviço for retomado. Para testar isso, abra outra janela do terminal e interrompa o serviço. Isso emitirá bipes constantes até você reiniciar o serviço. Entretanto, para usar esse recurso, você deve ter o pacote beep instalado em seu sistema.

Saia do comando watch na mudança de saída

Você também pode instruir o comando watch a parar de executar e sair quando a saída do comando for alterada. Você pode fazer isso usando a opção -g. Esta opção é muito útil em cenários em que você está aguardando determinadas alterações na saída.

  Como instalar o tema Vimix GTK no Linux

Assim que a saída mudar, o comando watch irá parar. Você pode combinar esse uso com o comando echo para exibir uma mensagem na tela.

Por exemplo, considere um cenário em que você está aguardando a chegada de um arquivo em seu diretório. O comando a seguir monitorará o diretório do arquivo especificado. Assim que chegar, o comando watch irá parar de funcionar e o arquivo de mensagem que chegou será exibido no terminal.

 watch -g "ls -l | grep filename" && echo "file arrived" 

Outro exemplo útil é uma notificação quando um usuário específico faz login no seu sistema:

 watch -g "who | grep username" && echo "username logged in" 

Este comando monitorará a saída do comando who que lista os usuários que estão logados. Assim que o usuário fizer login, o comando watch irá parar e exibir uma mensagem no terminal.

Da mesma forma, você pode instruir o comando watch para interromper um serviço quando algumas alterações forem feitas em um arquivo. Lembre-se de que, ao usar uma cadeia de comandos canalizada, você precisará colocar o comando inteiro entre aspas.

Observe as atividades em seu sistema Linux

Se você estiver fazendo o mesmo processo repetidamente, considere usar o comando watch para automatizá-lo. Isso evita que você digite os comandos com frequência para ver o que mudou.

Você também pode usar o comando watch com outros comandos do Linux para monitorar recursos e atividades do sistema e rastrear alterações em arquivos ou diretórios.