zsh 进程占用了我 95% 的 CPU

zsh 进程占用了我 95% 的 CPU

打开活动监视器时,我发现一个 zsh 进程占用了所有 CPU。这正常吗?我有终端哦我的天啊安装但我不认为这是正常行为。

任何想法?

答案1

我也经常遇到这个问题。它总是installdinstalld安装/更新 Apple 应用程序有关,例如 iWork(如果我没记错的话,它是 iWork 独有的;至少我还没有遇到过第三方应用程序出现这种情况)。

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

$SHELL -c command...

它已在 上进行了测试,bash但未在 上进行测试zsh,因此当以zsh这种方式调用时,会出现微妙的 shell 兼容性问题。当您检查有问题的进程时(不幸的是,据我所知,活动监视器不会向您显示完整的命令;我htop为此使用,您可能也会使用ps或任何其他命令),您将看到类似

zsh -c defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated

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

defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated

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


* 我实在搞不懂为什么zsh -c会卡在诸如 之类的东西上defaults delete。不确定是不是我的环境出了问题。(我在 PATH 中将 GNU coreutils 和类似的东西放在了 BSD 东西的前面,但我很确定我从未弄乱过default。)也许default在内部使用 BSD 实用程序?但同样,我可以在 zsh 的终端中以交互方式或非交互方式运行相同的命令,没问题。这真是令人困惑(上面的解决方案不受影响)。欢迎任何意见。

答案2

我经常遇到同样的问题,它总是与 installd 进程有关,更新 AppStore 应用程序。先终止 installd,然后终止 zsh 进程会有所帮助(但会禁用 AppStore 的功能,直到重新启动为止)。

相关内容