Script Bash para monitorar o log, combinar a palavra-chave e enviar comandos

Script Bash para monitorar o log, combinar a palavra-chave e enviar comandos
#!/bin/bash
sudo tail -fn0 /home/main/time.log |
grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
    while read line; do 
sudo pkill -f porch.sh &
sudo pkill -f garage.sh &
done

Estou tentando escrever um script que monitore um log e, ao combinar uma palavra-chave, ele disparará alguns comandos.

O problema é que o que juntei funcionará apenas uma vez, depois sairá e interromperá o monitoramento.

Eu adicionei "head -1" ao grep, porque quero que ele seja executado apenas após a primeira palavra-chave e evite que ele seja executado várias vezes caso várias palavras-chave apareçam no final do log. Então, basicamente, se várias palavras-chave aparecerem no final, quero que ele seja executado na primeira palavra-chave, ignore o restante das palavras-chave, execute os scripts listados e volte a monitorar o final do log.

Eu preferiria que o script permanecesse ativo depois de corresponder a uma palavra-chave e continuar monitorando o final do log em busca de novas palavras-chave que possam ser registradas.

Qualquer conselho é muito apreciado. Obrigado!

Responder1

Eu recomendo que você use o loop infinito se quiser continuar monitorando e apenas adicione e durma dentro do seu shell para informar quanto tempo precisa passar para monitorar novamente, se você estiver usando o shell bash, seria algo assim:

#!/bin/bash
while true
do
   sudo tail -fn0 /home/main/time.log |
   grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
   while read line; do 
      sudo pkill -f porch.sh &
      sudo pkill -f garage.sh &
   done
   sleep 1 #change it for the time you want it to keep it monitoring again
done

informação relacionada