Linux命令行:
当我执行以下命令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
但是当我发出以下命令时它什么都没有显示
pgrep tomcat-5.5-26-rum OR pgrep "*-rum"
有些正文可以帮助我如何通过名称正则表达式为“* -rum”获取tomcat进程ID
提前致谢。
答案 0 :(得分:16)
pgrep只搜索没有完整路径的进程名称(在你的情况下只有 java )而没有参数。
由于 tomcat-5.5-26-rum 是后者的一部分,我会用
搜索pidps -ef | grep tomcat-5.5-26-rum | grep java | awk ' { print $2 } '
double grep对于丢弃grep pids本身很有用
答案 1 :(得分:7)
只需在catalina.sh
文件
CATALINA_PID="$CATALINA_BASE"/logs/tomcat.pid
OR
CATALINA_PID=/tmp/tomcat.pid
并弹跳tomcat。这将在给定路径中创建一个tomcat.pid
文件,并将Tomcat进程pid放入其中。
答案 2 :(得分:3)
这对我有用:
这将给出当前运行tomcat的进程id
echo ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'