2017-04-14 59 views
0

我正在使用RHEL。我想通过命令如何在shell中grep tomcat Pid?

ps -ef | grep tomcat | awk '{print $2}' 

我的输出是grep的Tomcat进程的PID,但我想只有28693

root  12854 0.0 0.0 112652 968 pts/0 S+ 01:12 0:00 grep --color=auto tomcat 
root  28693 2.1 45.0 7479444 1629972 ?  Sl Apr13 21:11 /usr/java/jdk1.8.0_45//bin/jav 

[[email protected] ~]# ps -ef | grep tomcat | awk '{print $2}' 
13240 
28693 

回答

0

使用pgrep

pgrep tomcat 

这将返回过程的唯一的PID。

随着ps

ps -ef | grep tomcat | grep -v grep | awk '{print $2}' 
+0

谢谢。以及这也是为我工作ps -ef | grep tomcat | awk'NR == 2 {print $ 2}' – uday

+0

如果输出顺序发生变化,该怎么办? – franklinsijo

0

ps -ef | grep to[m]cat | awk '{print $2}'

看到参数grep命令的一个字母前后的方括号?他们是一个正则表达式。正则表达式中的方括号表示“这些字母中的任何一个”。所以基本上,您正在寻找to,其次是方括号内的任何字母(仅在此为m),然后为cat。是的,这与字面上编写tomcat的结果相同,但它确实防止grep找到它自己的命令行,因为它不会找到字符串tomcat,而是to[m]cat。一个小技巧来防止grep匹配自己。