用于剪切ps命令输出的Shell脚本

时间:2017-04-11 09:29:02

标签: shell unix

如何切割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

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

如果你不关心它是哪个过程,你可以在head -1的第一行之后剪切输出。

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

如果你需要找到母进程,可以在ps中添加-H选项,除了缩进子进程以创建一个漂亮的进程树/林之外,还要对进程进行排序,以便父母总是在孩子面前列出。

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