今天,当我尝试杀死所有与 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每次都不同。谢谢大家的帮助!
您看到的是
grep
过程,而不是 docker
过程。每当您使用 grep
过滤 ps
的输出时,您都会遇到这个问题。为了避免列出 grep
进程,规范的解决方案是将目标进程名称中的第一个字符放在方括号中:
ps aux | grep '[d]ocker'
由于搜索字符串包含方括号(不会有效地改变正则表达式),当在
grep
进程的名称中找到时,它将不再与正则表达式本身匹配。