2017-04-14 3 views
0

私はRHELを使用しています。私は、コマンドシェルでgrep tomcat Pidを実行する方法は?

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

私の出力があることによって、TomcatプロセスのPIDをgrepしたいが、私が欲しいのは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コマンドの引数の文字の1の周りに角括弧を参照してください?それらは正規表現です。正規表現中の角括弧は、「それらの文字のいずれか」を意味します。したがって、基本的には、toを探していて、角括弧(mのみ)内の文字の後にcatが続きます。はい、この結果は文字通りtomcatと同じ結果になりますが、文字列tomcatではなく、to[m]catが見つからないため、grepがそれ自身のコマンドラインを見つけられるのを防ぎます。 grepがそれ自身とマッチするのを防ぐための小さなトリックです。

関連する問題