You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于使用ps命令获取进程快照时排除指定进程的技术咨询

使用ps命令获取进程快照时排除指定进程的技术咨询

嘿,我来帮你搞定这个需求!要获取当前进程的快照,同时排除Docker相关的进程(包括docker本身、containerd和containerd-shim-runc-v2),这里有几个实用的方法,你可以根据自己的使用习惯选择:

方法一:结合ps和grep反向排除

这是最通用的方式,几乎所有Linux系统都支持:

ps aux | grep -vE '(docker|containerd|containerd-shim-runc-v2)'

简单解释一下各个部分的作用:

  • ps aux:列出所有用户的所有进程,包含进程用户、PID、CPU/内存占用等详细信息
  • grep -v:反向匹配,也就是把符合后续规则的行从结果里排除掉
  • -E:启用扩展正则表达式,这样我们可以用|来分隔多个要排除的进程名称

不过要注意,这个命令可能会把执行grep的自身进程也列出来,如果你想把它也排除,可以稍微修改一下:

ps aux | grep -vE '(docker|containerd|containerd-shim-runc-v2|grep)'

方法二:使用ps的--exclude参数(推荐,部分系统支持)

如果你用的是较新的procps-ng版本(大部分现代Linux发行版比如Ubuntu、CentOS 8+都默认使用这个),可以直接用ps自带的--exclude参数,写法更简洁直观:

ps aux --exclude comm='docker' --exclude comm='containerd' --exclude comm='containerd-shim-runc-v2'

这里的comm指的是进程的命令名,直接指定要排除的进程名称即可,不需要写正则表达式,出错概率更低。

方法三:用pgrep配合ps精准排除PID

如果想要更精准地排除进程(比如避免因为进程名包含关键字而误排除),可以先通过pgrep找出目标进程的PID,再用ps排除这些PID:

ps aux | grep -v "^$(pgrep -d '|' -x docker containerd containerd-shim-runc-v2)"

解释一下:

  • pgrep -x:精确匹配进程名称,不会匹配那些名称包含这些关键字的其他进程
  • -d '|':用竖线分隔找到的多个PID,方便后续grep匹配
  • ^:确保只匹配行首的PID,避免误排除其他包含这些数字的进程

备注:内容来源于stack exchange,提问作者palmasd1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:48:04