![进程id不断变化,不能用name杀死它](https://linux22.com/image/1017032/%E8%BF%9B%E7%A8%8Bid%E4%B8%8D%E6%96%AD%E5%8F%98%E5%8C%96%EF%BC%8C%E4%B8%8D%E8%83%BD%E7%94%A8name%E6%9D%80%E6%AD%BB%E5%AE%83.png)
答案1
在 Ubuntu 中,grep
是 的别名grep --color=auto
。您可以通过运行 来确认type grep
。当您运行 时grep something
,您将实际上跑步grep --color=auto something
。
现在,当grep
运行 或任何其他命令时,都会创建一个进程。因此,即使某个进程在内存中不存在,它也会产生一个输出,该输出显然是该grep
进程。例如,我没有注册为 的应用程序/程序foo
。但即使我运行ps aux | grep foo
,我也会得到:
kulfy 13544 0.0 0.0 21532 1076 pts/0 S+ 23:59 0:00 grep --color=auto foo
grep
一旦处理完从 管道传输的所有输出,该进程将自动终止ps aux
。
您可以使用pgrep
而是。它将显示正在运行的进程的进程 ID,并将名称作为参数传递。它不需要通过管道传输。
进一步阅读:
答案2
正如已经回答的那样,您正在查看自己的grep
进程。这就是为什么每个进程都有一个新的 PID。如果您想排除包含的这些行grep
,您可以执行ps ax | grep [g]eth
。