zsh 进程占用了我 95% 的 CPU

Mar*_*lle 6 zsh macos

打开我的活动监视器时,我有一个 zsh 进程占用了我所有的 CPU。正常吗?我安装了iTermoh-my-zsh,但我不认为这是正常行为。

任何的想法?

4ae*_*1e1 8

我也经常遇到这个问题。它总是涉及installd,最重要的是,installd安装/更新 Apple 应用程序,如 iWork(IIRC,它是 iWork 独有的;至少我还没有遇到第三方应用程序的情况)。

我相信它与 iTerm2 或 oh-my-zsh 无关(尽管我也同时使用两者)。我认为这是一个 shell 兼容性问题——Apple 的安装程序脚本可能会调用您的默认 shell

$SHELL -c command...
Run Code Online (Sandbox Code Playgroud)

它在bash但未经过测试zsh,因此当zsh以这种方式调用时,会出现微妙的 shell 兼容性问题。当您检查有问题的过程时(不幸的是,AFAIK 活动监视器没有向您显示完整的命令;我htop用于此目的,您可能会使用ps或其他),您会看到类似的内容

zsh -c defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
Run Code Online (Sandbox Code Playgroud)

这支持我的猜测(嗯,我的猜测实际上是从这些观察中得出的,准确地说。*因此,在这种情况下,解决方案只是自己运行命令

defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
Run Code Online (Sandbox Code Playgroud)

然后你杀死有问题的进程。installd自动继续(可能会像这样进入下一个卡住的过程)。经过多轮打磨,您会发现安装成功。我知道这很烦人,但这是我发现的唯一工作方式(可靠)。


*实际上我无法理解如何zsh -c卡在诸如defaults delete. 不确定是否与我的环境有关。(我已经在我的 PATH 中将 GNU coreutils 和类似的东西放在 BSD 东西的前面,但我很确定我从来没有搞砸过default。)也许在default内部使用 BSD utils?但是同样,我可以使用 zsh 在我的终端中以交互或非交互方式运行相同的命令,就好了。这真是莫名其妙(上面的解决方案不受影响)。欢迎任何意见。

  • 感谢您的指点!要使用标准 `ps` 工具显示完整进程命令行,只需运行 `ps uaxwww | grep zsh` 然后: 1. 检查是什么占用了 CPU;2.手动执行;3.杀死进程;4.重复 (2认同)