如果有两个 tomcat 正在运行,则获取其 pid

如果有两个 tomcat 正在运行,则获取其 pid

我有 2 个 tomcat 正在运行,如果两个 tomcat 有相似的名称,我该如何获取 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

您可以使用逆 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 }'

答案2

尝试

ps auxwww | grep "/tomcat-realbid/"

答案3

稍微简短一点:

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

搜索tomcat-realbid不带结尾的-ws并打印 pid。

答案4

通常awk可以做什么grep,因此您只需一个命令即可加入所有命令:

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

java这将获取所有包含和的行tomcat-realbid(请注意末尾的空格,这样才能获取所需的行)。对于那些匹配的行,它会打印其第二个字段。

相关内容