secd
又称:钥匙串和密码
简要回答
secd是管理你用户账户中钥匙串项目的macOS进程:存放在iCloud钥匙串或“本地项目”中的密码、通行密钥、密钥和证书。每个存储或自动填充密码的App都会向secd索取,打开iCloud钥匙串时,secd还会让这些项目与你的其他设备保持同步。
secd以你自己的账户运行,所以活动监视器的“用户”列显示的是你的用户名。它与securityd并肩工作,securityd是一个以root运行的旧进程,负责Mac从早期版本起就在使用的基于文件的钥匙串,即“登录”和“系统”钥匙串。secd则负责较新的钥匙串,iCloud钥匙串、通行密钥和受触控ID保护的项目都依赖它。“密码”App会显示你存储的密码和通行密钥,“钥匙串访问”则会列出两种钥匙串。
大部分时间secd处于闲置状态。只有真正有工作时它才会忙起来:新Mac上或打开iCloud钥匙串后的首次同步、更改Apple账户密码后设备重新连接、大量导入密码,或者某个App一遍又一遍地请求同一个项目。最后一种通常就是它一直排在CPU列表前面的原因。
本页内容
secd为什么占用这么多CPU
最常见的原因是同步。Mac加入iCloud钥匙串时,secd会下载、解密并合并你其他设备上的每一个项目;每当大量项目同时变化,它都要再做一遍。钥匙串里有成千上万个密码、密钥和证书时耗时更长,而且在设备之间互相追赶进度时,这项工作可能一波接一波地出现。
峰值一直不结束,通常说明陷入了循环。某个App向secd请求一个项目,得到错误或拒绝后再次请求,每秒好多次。密码管理器、浏览器、VPN客户端和存储登录令牌的开发者工具是常见的嫌疑对象,往往就在App更新之后。
怎么处理
在换新Mac、重新登录或更改密码之后,让Mac保持唤醒,等同步完成。它会自行结束。如果是循环,就逐个退出App,从存储密码或令牌的App开始,同时在活动监视器中观察secd。如果退出某个App后它降了下来,就更新那个App,或者退出登录后重新登录。
如果找不到是哪个App,就打开“系统设置”→你的名字→“iCloud”→“密码”,关闭“同步此Mac”,重新启动,再重新打开。你的密码仍保存在iCloud和你的其他设备上。在活动监视器中退出secd只能管一时:macOS会立刻重新启动它。
如何查看secd在做什么
正常工作的同步会逐渐安静下来,而循环每隔几分钟看起来都一样。活动监视器和“终端”可以告诉你是哪一种。
- 打开活动监视器,点按“CPU”标签页,选取“显示”→“所有进程”,然后在搜索栏中输入
sec。你会看到secd列在你自己的用户名下,securityd列在root下。 - 观察secd的“% CPU”几分钟。数值逐渐降到零,说明同步正在收尾。数值一直不降,或者有规律地起伏,就是循环。
- 点按“网络”标签页,在搜索栏中输入
cloudd。cloudd负责传输iCloud的同步流量。如果secd很忙,同时cloudd在收发数据,钥匙串多半正在同步。如果secd很忙而cloudd很安静,就去你的Mac上找某个App。 - 要看细节,打开“终端”并运行
log stream --predicate 'process == "secd"'。反复出现同一个App或项目的行,指向的就是要检查的App。按下Control-C停止。
secd的正常占用与异常情况
正常:secd平时接近零,在App存储或自动填充密码时短暂活跃一下。在新Mac上、打开iCloud钥匙串后,以及更改Apple账户密码后,它会工作更长时间。
值得检查:你什么都没做,它却连续几小时很忙,风扇转起来,或者App自动填充密码很慢。常见原因有:
- 新Mac或恢复后的Mac首次进行iCloud钥匙串同步,钥匙串很大时可能要花一段时间。
- 大量导入,例如把其他密码管理器或浏览器中的密码导入“密码”App。
- 某个App循环请求同一个钥匙串项目,常见于更新后的密码管理器、浏览器、VPN客户端或开发者工具。
- 多年累积的旧项目,例如已不再使用的App留下的证书和密钥,会让每次搜索和同步都变长。
钥匙串存放在哪里
两种钥匙串都在你的用户“资源库”中,位于~/Library/Keychains。登录钥匙串是文件login.keychain-db,secd管理的钥匙串则在那里一个以长ID命名的文件夹中。
不要为了解决CPU问题而删除或移动这些文件。只存在于这台Mac上的项目,例如不同步密码的App所存储的密码,会因此丢失。要查找和移除旧项目,请使用“钥匙串访问”(可以在“聚焦”中搜索打开)和“密码”App。
常见问题
Mac上的secd是什么?
它是管理你用户账户中钥匙串项目(例如密码和通行密钥)并让它们与iCloud钥匙串同步的macOS进程。每个存储或自动填充密码的App都要经过它。
secd为什么CPU占用高?
如果只是一会儿,那是因为换新Mac、重新登录或更改密码后iCloud钥匙串在同步。如果持续几个小时,那是因为某个App不停地向它请求同一个项目。逐个退出存储密码或令牌的App,就能找出是哪一个。
secd和securityd有什么区别?
两者都是macOS钥匙串的一部分。securityd以root运行,负责旧的基于文件的钥匙串,即“登录”和“系统”钥匙串。secd以你的身份运行,负责iCloud钥匙串和通行密钥所用的钥匙串。
secd是病毒吗?
不是。它是macOS的一部分,位于/usr/libexec/secd,处在磁盘上只有Apple更新才能更改的密封区域中,并由launchd以你自己的账户启动。每台Mac都在运行它。
为什么Mac总是要我输入钥匙串密码?
通常是因为登录钥匙串的密码与Mac的登录密码不再一致,多半发生在登录密码被重设之后。这个钥匙串属于securityd,而不是secd。Apple的解决办法是在“钥匙串访问”→“设置”中选择“复位默认钥匙串”,但这会删除存储在登录钥匙串中的密码,所以Apple建议只在Apple支持人员建议时才这样做。
相关条目
想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。