2013-09-29 43 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

相关问题