Ignora um comando como o próprio processo enquanto usa grep em processos [duplicados]

0

Estou escrevendo um script para verificar se determinado aplicativo está sendo executado ou não. Se a sua morte eu simplesmente vou reiniciá-lo.

Minha inicial foi, verifique se existe um pid para esse processo (que neste caso seria um Java Thread ).

ps aux | grep org.apache.flume.node.Application
root     15881  5.1  1.1 3286884 93996 pts/3   Sl   00:25   0:26 /usr/lib/jvm/java-1.8.0-ibm-1.8.0.3.20-1jpp.1.el7_2.x86_64/jre/bin/java -Xms100m -Xmx500m -Dcom.sun.management.jmxremote? -Dflume.monitoring.type=http -Dflume.monitoring.port=34545 -cp /prayagupd/opt/flume/conf:/prayagupd/opt/flume/lib/*:/lib/* -Djava.library.path= org.apache.flume.node.Application -f /prayagupd/opt/flume/conf/flume.conf -n client
root     18716  0.0  0.0 112780   976 pts/3    R+   00:34   0:00 grep --color=auto org.apache.flume.node.Application

Com base na minha lógica, eu verificaria se há um ID de processo para o nome dado, mas ps aux também conta o comando que eu executo para grep the processes .

ps aux | grep org.apache.flume.node.Application | awk '{print $2}'
15881
22878

Eu posso fazer um teste

if(I find 2 processIds) then 
      count it as running process(as shown in below command)
otherwise 
      re-start it again.

por exemplo,

ps aux | grep org.apache.flume.node.Application | awk '{print '$2'}' | wc -l
2

Mas, sinto que há uma maneira melhor de verificar se algum processo está em execução.

    
por prayagupd 22.11.2016 / 10:03

1 resposta

0

Isso dará a contagem

ps aux | grep -c "[o]rg.apache.flume.node.Application"
    
por 22.11.2016 / 10:11

Tags