2011-06-10 42 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