macOS launchd CPU 占用过高问题排查记录

macOS launchd CPU 占用过高问题排查记录

问题现象

MacBook 出现以下异常:

  • launchd CPU 长时间占用 100%~300%
  • logd CPU 也持续较高
  • 风扇高速运转(Intel Mac)或机器发热(Apple Silicon)
  • 即使退出 Cursor,CPU 仍然没有下降

最初怀疑:

  • Cursor
  • VSCode
  • 网络代理
  • 某个后台进程不断拉起

最终证明以上均不是根因。


排查过程

1. 查看 launchd

css 复制代码
 top -o cpu

发现:

复制代码
 launchd
 logd

长期排在 CPU 前列。


2. 查看 launchd 的 syscall

使用

复制代码
 sudo fs_usage launchd

发现不停输出:

csharp 复制代码
 lstat64 private/etc/localtime
 sendto()
 lstat64 private/etc/localtime
 sendto()
 ...

说明:

launchd 一直在:

  • 查询时区
  • 向某个 socket 发消息
  • 写日志

形成死循环。


3. 查看 launchd 打开的文件

css 复制代码
 sudo lsof -p 1

发现:

c 复制代码
 FD 5
 ​
 /private/var/log/com.apple.xpc.launchd/launchd.log

说明 launchd 正在疯狂写日志。


4. 查看 launchd 日志

bash 复制代码
 sudo tail -100 \
 /private/var/log/com.apple.xpc.launchd/launchd.log

发现大量重复内容:

bash 复制代码
 (gui/501/com.sogou.SogouTaskManager)
 ​
 cannot spawn:
 service plist has the quarantine extended attribute

紧接着:

复制代码
 assertion failed

整个日志几乎全部由这一条组成。


根因分析

真正的问题不是 Cursor。

真正的问题是:

复制代码
 com.sogou.SogouTaskManager

即:

搜狗输入法后台服务。

launchd 不断尝试启动它:

erlang 复制代码
 launchd
         │
         ▼
 启动 SogouTaskManager
 ​
         │
         ▼
 启动失败
 ​
 原因:
 ​
 service plist has the quarantine extended attribute
 ​
         │
         ▼
 launchd 认为 KeepAlive 服务退出
 ​
         │
         ▼
 再次启动
 ​
         │
         ▼
 再次失败
 ​
 ...
 ​
 无限循环

于是:

复制代码
 launchd CPU ↑
 ​
 ↓
 ​
 不停写日志
 ​
 ↓
 ​
 logd CPU ↑
 ​
 ↓
 ​
 整个系统 CPU 很高

为什么会失败?

日志中的关键错误:

复制代码
 service plist has the quarantine extended attribute

说明:

LaunchAgent 或其对应文件带有:

复制代码
 com.apple.quarantine

扩展属性。

这是 macOS 的安全机制。

通常来源:

  • 浏览器下载
  • AirDrop
  • 第三方安装包
  • 手动复制 App
  • 升级后遗留文件

launchd 检测到:

此服务处于 quarantine 状态,不允许启动。

但是 LaunchAgent 又配置了:

ini 复制代码
 KeepAlive = true

于是:

复制代码
 失败
 ​
 ↓
 ​
 再次启动
 ​
 ↓
 ​
 再次失败
 ​
 ↓
 ​
 无限循环

为什么 logd 也会很高?

因为:

每次启动失败都会记录日志:

c 复制代码
launchd

↓

syslog

↓

logd

↓

写 launchd.log

所以:

复制代码
launchd CPU 高

↓

logd CPU 也高

这是结果,而不是原因。


Cursor 为什么不是根因?

虽然最开始怀疑 Cursor:

  • Cursor 经常启动大量后台进程
  • AI 插件可能频繁创建子进程

但是:

关闭 Cursor 后:

复制代码
launchd CPU

没有下降

并且 launchd 日志全部指向:

复制代码
com.sogou.SogouTaskManager

因此可以排除 Cursor。


后续排查建议

查看 LaunchAgent

bash 复制代码
launchctl print gui/501/com.sogou.SogouTaskManager

查找 plist

javascript 复制代码
find ~/Library /Library \
-name "*SogouTaskManager*.plist" 2>/dev/null

通常位于:

javascript 复制代码
~/Library/LaunchAgents/

或:

复制代码
/Library/LaunchAgents/

查看 quarantine 属性

javascript 复制代码
xattr -l \
~/Library/LaunchAgents/com.sogou.SogouTaskManager.plist

或者:

复制代码
xattr -l /Applications/SogouInput.app

如果看到:

复制代码
com.apple.quarantine

即可确认问题。


临时停止服务

bash 复制代码
launchctl bootout gui/501/com.sogou.SogouTaskManager

或者:

javascript 复制代码
launchctl unload \
~/Library/LaunchAgents/com.sogou.SogouTaskManager.plist

如果 CPU 立即下降,则进一步验证问题来源。


修复方式

方法一(推荐)

重新安装最新版搜狗输入法。

这样可以同时修复:

  • LaunchAgent
  • plist
  • 权限
  • 签名
  • quarantine 状态

这是最稳妥的方法。


方法二

移除 quarantine 属性:

复制代码
sudo xattr -dr \
com.apple.quarantine \
/Applications/SogouInput.app

或者:

javascript 复制代码
xattr -d \
com.apple.quarantine \
~/Library/LaunchAgents/com.sogou.SogouTaskManager.plist

仅建议在确认文件来源可信时使用。


排查思路总结

scss 复制代码
CPU 高
    │
    ▼
launchd 高
    │
    ▼
查看 syscall
(fs_usage)
    │
    ▼
不停 sendto()
不停 lstat()
    │
    ▼
查看 lsof
    │
    ▼
发现 launchd.log
    │
    ▼
查看日志
    │
    ▼
发现:

com.sogou.SogouTaskManager

cannot spawn

service plist has the quarantine extended attribute

    │
    ▼
确定:

LaunchAgent 无限重启

    │
    ▼
launchd CPU 高

    │
    ▼
logd CPU 高

结论

本次问题的直接原因是:

搜狗输入法(com.sogou.SogouTaskManager)对应的 LaunchAgent 无法启动,因为其 plist(或关联文件)带有 com.apple.quarantine 扩展属性。由于 LaunchAgent 配置了自动保活(KeepAlive),launchd 持续尝试重启该服务,导致陷入无限重启循环,从而造成 launchdlogd CPU 长时间占用过高。

Apple 的 launchd 会负责管理 LaunchAgent/LaunchDaemon,当配置了保活策略时,只要服务异常退出,就会持续尝试重新启动。若启动失败的原因(如 quarantine、签名、权限等)一直存在,就会形成重启风暴(restart storm)。相关行为与 launchd 的服务管理机制一致。

相关推荐
代码的小搬运工4 小时前
【iOS】3G-Share仿写总结
macos·ios·cocoa
2501_916007475 小时前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
寒水馨1 天前
macOS下载、安装openclaw-v2026.7.1(附安装包OpenClaw-2026.7.1.dmg)
macos·大模型·github·开源软件·ai助手·openclaw·gpt-5.6
白玉cfc1 天前
【iOS】MRC和ARC
macos·ios·cocoa
飞雪金灵1 天前
mac电脑 Maven下载安装和配置环境变量
macos·maven·maven下载安装·mac电脑环境
雨声不在1 天前
macos 12使用docker
macos·docker·容器
一叶龙洲1 天前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
李小白杂货铺2 天前
Oh My Zsh 简记
macos·macbook·zsh·主题·插件·oh my zsh·omz
fukai77222 天前
macOS防止休眠的菜单栏小工具
macos