(Mac OS X) 为什么这个进程无法杀死并且它的 pid 随时间变化?

问题描述 投票:0回答:1

今天,当我尝试杀死所有与 docker 相关的进程时,我注意到一些非常有趣的事情:

➜  ~  ps aux | grep docker
Caesar          73944   0.0  0.0  2423372    220 s000  R+    6:49PM   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn docker
➜  ~  kill 73944
kill: kill 73944 failed: no such process
➜  ~  ps aux | grep docker
Caesar          74064   0.0  0.0  2432788    572 s000  R+    6:50PM   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn docker
➜  ~

我用了 ps aux | grep docker 来查找与docker相关的进程,虽然我不确定它是否真的是一个docker进程。有趣的是:当我使用 pid 杀死它时,我无法做到这一点,正如您从屏幕截图中看到的那样。另外,我注意到 pid 在第二个 ps 命令中发生了变化。

我知道这个问题可能看起来很愚蠢,但是,我在谷歌上找不到任何东西,因为我不知道如何描述它。也许你可以帮助我。谢谢 ; )

更新

感谢您在此问题下的评论。我注意到pid属于grep进程,难怪为什么pid每次都不同。谢谢大家的帮助!

macos terminal process pid
1个回答
4
投票

您看到的是

grep
过程,而不是
docker
过程。每当您使用
grep
过滤
ps
的输出时,您都会遇到这个问题。为了避免列出
grep
进程,规范的解决方案是将目标进程名称中的第一个字符放在方括号中:

ps aux | grep '[d]ocker'

由于搜索字符串包含方括号(不会有效地改变正则表达式),当在

grep
进程的名称中找到时,它将不再与正则表达式本身匹配。

© www.soinside.com 2019 - 2024. All rights reserved.