2017-04-11 3 views
0

schneiden Wie kann ich die ps Befehlsausgabe schneiden einen einzigen Prozess anzuzeigenShell-Skript Ausgabe des Befehls 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 

Antwort

0

den Hauptprozess anzuzeigen:

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

(OR)

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

Hier

$3 - Eltern-PID.

EDIT:

Wenn Sie nur eine Zeile als Ausgabe benötigen,

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

Vielen Dank für Ihre Hilfe. –

+0

Jetzt noch eine Frage, es gibt einige Server, die verschiedene Prozesse laufen und ich muss noch eins drucken, –

+0

00:00:00/bin/sh /app/opt/tomcat/bin/../instance1/bin/catalina.sh start 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

Wenn Sie kümmern sich nicht, das zu verarbeiten ist, kann man einfach die Ausgabe nach der ersten Zeile geschnitten mit head -1.

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

Wenn Sie die Mutter Prozess zu finden, dann können Sie die -H Option zum ps, die (Prozesse zusätzlich zu einrücken, den Kind zu einem schönen Prozess Baum/Wald zu machen) hinzufügen, damit die Prozesse anordnet, dass die Eltern werden immer vor den Kindern aufgeführt.

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

Vielen Dank für Ihre Hilfe –

Verwandte Themen