2017-04-11 75 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

非常感谢您的帮助 –