Pegue o pid se 2 tomcat (s) estiverem rodando

1

Eu tenho 2 tomcat em execução, como obtenho o pid se ambos tiverem nomes parecidos?

ps -ef | grep java
root     12952     1  0 10:01 pts/0    00:00:03 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/usr/local/realbid/tomcat-realbid-ws/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/realbid/tomcat-realbid-ws/endorsed -classpath /usr/local/realbid/tomcat-realbid-ws/bin/bootstrap.jar -Dcatalina.base=/usr/local/realbid/tomcat-realbid-ws -Dcatalina.home=/usr/local/realbid/tomcat-realbid-ws -Djava.io.tmpdir=/usr/local/realbid/tomcat-realbid-ws/temp org.apache.catalina.startup.Bootstrap start
root     12995     1  0 10:02 pts/0    00:00:03 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/usr/local/realbid/tomcat-realbid/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/realbid/tomcat-realbid/endorsed -classpath /usr/local/realbid/tomcat-realbid/bin/bootstrap.jar -Dcatalina.base=/usr/local/realbid/tomcat-realbid -Dcatalina.home=/usr/local/realbid/tomcat-realbid -Djava.io.tmpdir=/usr/local/realbid/tomcat-realbid/temp org.apache.catalina.startup.Bootstrap start
root     13317 12252  0 10:12 pts/0    00:00:00 grep java

Se eu usar o grep básico, recebo o (s) pid (s)

echo 'ps aux | grep  'tomcat-realbid' | grep -v grep | awk '{ print $2 }''
12952 12995

Existe uma maneira de obter apenas o pid de tomcat-realbid ?

    
por user3789893 10.03.2015 / 11:31

5 respostas

1

Você poderia usar um grep inverso, então talvez:

ps aux | grep 'tomcat-realbid' | grep -v 'tomcat-realbid-ws'

Isso basicamente filtraria os processos com tomcat-realbid e depois filtraria novamente removendo qualquer um que tivesse tomcat-realbid-ws, você já está usando um grep invertido para remover o grep original. O resultado final pode ser assim:

echo ps aux | grep  'tomcat-realbid' | grep -v 'tomcat-realbid-ws' | grep -v grep | awk '{ print $2 }'
    
por 10.03.2015 / 11:39
0

Tente

ps auxwww | grep "/tomcat-realbid/"
    
por 10.03.2015 / 11:55
0

Um pouco mais curto:

pgrep 'tomcat-realbid[^(-ws)]*$'

Procura tomcat-realbid sem o final -ws e imprime o pid.

    
por 10.03.2015 / 11:55
0

Talvez tente:

pgrep tomcat-realbid
    
por 10.03.2015 / 11:37
0

Normalmente, awk pode fazer o que o grep faz, então você pode unir todos os comandos em apenas um:

ps -ef | awk '/java/ && /tomcat-realbid / {print $2}'

Isso obtém todas as linhas contendo java e tomcat-realbid (observe o espaço no final, apenas para obter o que você queria). Para essas linhas de matchines, imprime seu segundo campo.

    
por 10.03.2015 / 13:29