se condição, loop no grep [closed]

0

Alguém poderia, por favor, fornecer ajuda para mim.

Eu tentei começar a escrever um script de shell, mas estou ficando preso com esse problema. Eu preciso de grep comandos "adb shell ps" e encontrar nele 3 processos com nomes:

  1. proc1
  2. proc2
  3. proc3

E se esses processos estiverem presentes na saída grep , continue trabalhando com o script, caso contrário, verifique o grep 5 vezes dentro do intervalo - 30 segundos. Finalmente - se o meu processo não começar, saia do script de formulário.

    
por user2335940 08.08.2013 / 11:51

1 resposta

1

Aqui está um script que faz o que eu acho que você está procurando:

#!/bin/bash

cnt=1; found=0;
while [ "$cnt" -le 5 ]; do
  echo "chk#: $cnt"
  if [[ $(pgrep -f "proc1") && $(pgrep -f "proc2") && $(pgrep -f "proc3") ]]; then
    found=1
    break
  fi
  let cnt=cnt+1
  sleep 6
done

[ "$found" -eq 0 ] && exit

echo "found them"

Você pode alterar essa linha se proc1, proc2, & proc3 são os nomes reais dos processos. O acima procura por qualquer ocorrência dessas strings nas linhas de comando.

  if [[ $(pgrep "proc1") && $(pgrep "proc2") && $(pgrep "proc3") ]]; then

O script faz uso de pgrep em vez de grep , pois esse comando pode essencialmente fazer um ps .. | grep ... em um único comando.

    
por 08.08.2013 / 14:01