Получите pid, если 2 кота (кота) работают

У меня есть 2 рабочих кота, как я получаю pid, если у обоих есть аналогичные имена?

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

Если я использую основной grep, я получаю обоих pid

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

Есть ли способ получить только pid tomcat-realbid?

1
задан 10 March 2015 в 12:50
5 ответов

Вы могли бы использовать обратный grep, поэтому, возможно:

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

Это в основном фильтрует процессы с помощью tomcat -realbid, а затем снова отфильтруйте, удаляя все, что имеет tomcat-realbid-ws, вы уже используете обратный grep для удаления исходного grep. Конечный результат может выглядеть так:

echo ps aux | grep  'tomcat-realbid' | grep -v 'tomcat-realbid-ws' | grep -v grep | awk '{ print $2 }'
1
ответ дан 4 December 2019 в 00:11

Попробуйте

ps auxwww | grep "/tomcat-realbid/"
0
ответ дан 4 December 2019 в 00:11

Немного короче:

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

Выполняет поиск tomcat-realbid без конца -ws и печатает pid .

0
ответ дан 4 December 2019 в 00:11

Может быть, попробуйте:

pgrep tomcat-realbid
0
ответ дан 4 December 2019 в 00:11

Обычно awk может делать то, что делает grep , поэтому вы можете объединить все команды в одну:

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

Это получает все строки, содержащие оба java и tomcat-realbid (обратите внимание на пробел в конце, чтобы получить тот, который вам нужен). Для этих совпадающих строк он печатает свое второе поле.

0
ответ дан 4 December 2019 в 00:11

Теги

Похожие вопросы