2013-09-29 173 views
12

我使用這個命令來獲得另一個命令的進程ID:ps aux | grep的返回PID爲自己太

ps aux | grep 7000.conf | awk '{print $2}' 

這將返回兩個PID:

7731 
22125 

我只想要第一個。第二個是上述命令中的grep的PID。在此先感謝任何知道如何修改上述命令以返回第一個pid的人。

p.s.開到一個新的命令,做同樣的事情

回答

17

在這種特殊情況下,逃避.什麼,我認爲它是爲了做應該工作:

ps aux | grep '7000\.conf' | awk '{print $2}' 

另外,排除grep

ps aux | grep 7000.conf | grep -v grep | awk '{print $2}' 
+0

使用'ps aux | grep -v'7000.conf'。不需要雙grep也不awk。 -v只是「在做grep時從結果中刪除自己」。 – erm3nda

+1

@ erm3nda:'-v'意思是「反轉匹配」,這樣在使用'7000.conf'的時候就不會找到你要找的東西 - 它會找到其他所有進程。 'awk'也是原始問題的一部分,與刪除'grep'(它從行中提取pid)無關。所以不行。 – Ryan

+0

你說得對。謝謝。 – erm3nda

5

ps aux | grep "[7]000.conf"也可以。

+0

這很酷。你能解釋它是如何工作的嗎? – DiegoSalazar

+1

查看http://stackoverflow.com/a/9375940/2599522獲取解釋;) – user2599522

相關問題