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.