2017-04-11 111 views
0

我怎樣才能切斷ps命令輸出到顯示一個單一的過程殼牌腳本以切割ps命令輸出

$ ps -ef | grep -i httpd | grep -v grep 

root  16786  1 0 Mar03 ?  00:01:02 /usr/sbin/httpd 
apache 17153 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17154 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17155 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17157 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17158 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17161 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17162 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 
apache 17163 16786 0 Apr09 ?  00:00:00 /usr/sbin/httpd 

回答

0

要顯示的主要過程:

ps -ef | grep 'httpd' | grep -v 'grep' | awk '$3 == 1' 

(OR)

ps -ef | awk '/httpd/ && $3 == 1' 

這裏,

$3 - 家長PID。

編輯:

如果你只需要一個線輸出,

ps -ef | grep -m1 'httpd' 
+0

非常感謝您的幫助。 –

+0

現在還有一個問題,有一些服務器運行不同的過程,我仍然需要打印一個, –

+0

00:00:00/bin/sh /app/opt/tomcat/bin/../instance1/bin/catalina.sh開始 00:00:00 cronolog /app/opt/tomcat/instance1/logs/catalina.%Y-%m-%d.out 00:00:00/bin/sh/app/opt/tomcat/bin/../instance2/bin/catalina.sh st –

0

如果你不在乎它是過程,你可以切斷與head -1第一線後的輸出。

$ ps -ef | grep -i httpd | grep -v grep | head -1 
root  16786  1 0 Mar03 ?  00:01:02 /usr/sbin/httpd 

如果您需要尋找母親的過程,你可以在-H選項添加到PS,這(除了縮進子進程做一個很好的進程樹/林)定購流程,以便在父母總是列在孩子面前。

$ ps -efH | grep -i httpd | grep -v grep | head -1 
root  16786  1 0 Mar03 ?  00:01:02 /usr/sbin/httpd 
+0

非常感謝您的幫助 –