opendirectoryd 占用 40% 的 CPU

jua*_*blo 23 cpu-usage process osx-lion macos

我有一台配备 Lion 10.7.2、2.26 GHz CPU 和 2GB DDR3 RAM 的 MacBook Pro。

如果我打电话

top -o cpu
Run Code Online (Sandbox Code Playgroud)

/usr/libexec/opendirectoryd过程消耗CPU的40%以上。

$ ps aux | grep opend                                                                       
root 27834 40,4 0,3 2472048 5780 ?? Rs 6:36PM 167:19.66 /usr/libexec/opendirectoryd
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

jua*_*blo 24

该问题与 Dropbox 中的死符号链接有关。使用以下方法查找它们:

find ~/Dropbox -type l -printf "%Y %p\n" | grep "^N"
Run Code Online (Sandbox Code Playgroud)

解决方案是:删除无效的符号链接。如果find没有printf选项,请使用:

find -L ~/Dropbox -type l
Run Code Online (Sandbox Code Playgroud)

参考

查找死符号链接


小智 12

正如@juanpablo 所提到的,这可能是由符号链接引起的。

显然,如果符号链接指向/home,则 autofs 或 automountd 会触发并占用大量 CPU 来确定该位置确实不存在。

看看/etc/auto_home/etc/autofs.conf

要查看您是否遇到此特定问题,请设置

AUTOMOUNTD_VERBOSE=TRUE
Run Code Online (Sandbox Code Playgroud)

中的选项autofs.conf,重新启动 automountd

sudo launchctl stop com.apple.automountd
Run Code Online (Sandbox Code Playgroud)

并查看 syslog.log(您可以使用应用程序:控制台)。如果您看到类似以下内容,您就会受到此问题的影响:

May 20 17:53:43 xxx automountd[31709]: od_search failed
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请编辑文件/etc/auto_master并删除(或散列#)以/home. 然后运行:

sudo automount -vc
Run Code Online (Sandbox Code Playgroud)