2013-01-03 70 views
6

Linux命令行:Linux命令通过名称获取Tomcat进程ID

当我执行以下命令ps -ef |grep tomcat它让我看到下面的过程

abcapp 28119  1 0 12:53 ?  00:00:19 /usr/java/jdk1.6.0_10//bin/java -Xmx256m -Dabc.log.file=/home/app/apps/rum/logs/dev.log -Dabc.config=dev -Dlog4j.configuration=file:///home/abcapp/env/abc_env/abc_env-1.2/config/log4j-webapp.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/home/abcapp/env/tomcat/tomcat-5.5-26-rum/conf/logging.properties -Djava.endorsed.dirs=/home/abcapp/env/tomcat/tomcat-5.5-26-rum/common/endorsed -classpath :/home/abcapp/env/tomcat/tomcat-5.5-26-rum/bin/bootstrap.jar:/home/abcapp/env/tomcat/tomcat-5.5-26-rum/bin/commons-logging-api.jar -Dcatalina.base=/home/abcapp/env/tomcat/tomcat-5.5-26-rum -Dcatalina.home=/home/abcapp/env/tomcat/tomcat-5.5-26-rum -Djava.io.tmpdir=/home/abcapp/env/tomcat/tomcat-5.5-26-rum/temp org.apache.catalina.startup.Bootstrap start 

但是当我发出以下命令它说明不了什么

​​

可以一些身体帮助我怎样才能得到它的名称正则表达式为“* -rum”的tomcat进程ID

在此先感谢。

+0

人们似乎吝啬,当谈到upvoting :)谢谢问题询问此,这让我很容易找到答案。 –

回答

12

pgrep只搜索没有完整路径的进程名称(在你的情况下只有java)并且没有参数。

由于的tomcat-5.5-26朗姆酒是后者的一部分,我会搜索PID与

ps -ef | grep tomcat-5.5-26-rum | grep java | awk ' { print $2 } ' 

双grep的是有用丢弃的grep的PID本身

7

刚在catalina.sh文件的开头添加以下行

CATALINA_PID="$CATALINA_BASE"/logs/tomcat.pid 

OR

CATALINA_PID=/tmp/tomcat.pid 

并反弹tomcat。这将在给定路径中创建一个tomcat.pid文件,并将Tomcat进程pid放入其中。

2

这为我工作:

这会给当前运行Tomcat的进程ID

呼应ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'