como verificar se o fluxo está vazio?

1

Por exemplo, eu quero executar:

ps x | grep something | grep -v grep | somecommand

Eu quero executar somecommand apenas se houver algo em execução. Como fazer isso?

    
por UAdapter 17.09.2012 / 11:52

3 respostas

3

Você pode usar if . Além disso, para solicitar um comando, mas para excluir o próprio grep, você pode usar o seguinte truque:

if ps x | grep '[s]omething' ; then
    echo Running.
else
    echo Not running.
fi
    
por choroba 17.09.2012 / 12:04
2

Isso é simples:

pgrep something && somecommand

pgrep é como ps | grep something | grep -v grep , terser mas com menos opções para controlar a saída. No entanto, você não precisa se preocupar em filtrar por acaso algo realmente necessário (por exemplo, pgrep agreppina funcionará, mas ps x | grep agreppina | grep -v grep não funcionará).

command1 && command2 é um pouco como qualquer conjunção em uma linguagem de programação, o comando2 será executado somente se o primeiro comando for bem-sucedido (na verdade, se ele retornar um status zero).

    
por January 17.09.2012 / 12:40
0

Aqui está a solução

ps x | grep something | [[-n $(grep -v grep) ]] && somecommand

  • -n irá verificar se a string é nula ou não
  • & amp; & amp; é o operador e
por devav2 17.09.2012 / 13:01