执行命令(意外行为)

时间:2011-04-04 09:23:16

标签: unix

ps -ef | grep "someprocess"输出行包含:

.........................someprocess
.........................ps -ef | grep "someprocess" 

有人可以解释一下这是如何执行的吗?

如果我正在检查正在运行的进程,那么它将一直运行起来 ps -ef | grep "someprocess"永远在那里 当然我知道我可以做ps -ef | grep "someprocess" | grep -v 'grep'

但我想知道上面的执行过程要清楚。为什么我得到我刚刚执行的行(ps -ef | grep "someprocess“)来搜索进程?

2 个答案:

答案 0 :(得分:1)

来自this blog post

  

为什么grep显示自己?因为管道是由shell在ps执行之前的瞬间创建的,所以当后者搜索所有已加载的进程时,甚至会找到grep

答案 1 :(得分:1)

或使用

pgrep -fl somepattern

默认情况下不会显示pgrep进程

同样,pkill也不会自杀:)