2011-06-10 69 views
0

我有这个输出,这是运行匹配用于FCGI一个grep的所有进程的PID:使用awk捕获多行输出的第一行?

# ps ax | grep fcgi | cut -f1 -d' ' 
21065 
21066 
21067 
21068 
21069 
21070 
24801 

欲切出的很第一数目(即21065),所以我可以将它传递到灭杀功能杀死父进程(父进程作为第一个PID返回)。

有关如何做到这一点的任何想法?

回答

3

用途:

得到PID号

PARENT_PID=`ps ax | grep fcgi | cut -f1 -d' ' | head -1` 

直接杀:

kill `ps ax | grep fcgi | cut -f1 -d' ' | head -1` 
5

不要使用ps ax | grep...杀死一个进程,如果你能避免它。见here

而是使用pidof

+0

谢谢Fredrik。我会检查一下。 – eastydude5 2011-06-10 22:17:30

+0

最终强制产卵源创建一个PID文件。现在,我会捕捉/清除pid文件中的内容。 – eastydude5 2011-06-10 22:33:12

+1

你很快赶上;-) – 2011-06-10 22:38:27

0

没有必要通过all the hoops跳运行psgrepcutheadkill自己。这就是pkill的用途。

pkill fcgi 

另请参阅pgrep以备将来参考。

+0

...或者'killall fcgi' – ripat 2011-06-11 17:54:54

+0

@ripat:'killall'实际上很有问题,只能在给定系统(例如OSX)上无法使用pkill的情况下使用。在某些系统上,它实际上杀死了所有的东西,而在其他系统上,它的匹配效果很差,并且我不知道它是否比pkill更好。 – Caleb 2011-06-11 19:37:59