fileproviderd
又称:访达中的云存储
简要回答
fileproviderd是把云存储接入访达的macOS进程。iCloud云盘,以及在较新macOS上的Dropbox、OneDrive、Google Drive和Box,都使用Apple的File Provider系统:fileproviderd跟踪每个文件,在你打开时下载它,并在你不需要离线使用时释放空间。
正因为有它,云文件才能显示在访达中而不占空间:文件可以被列出,但在你打开之前并不下载,到时再由fileproviderd获取。它与每个云服务自己的App配合工作,由那个App负责和服务器通信。
它的负载更多取决于文件的数量,而不是大小。一个装有十万个小文件的文件夹(例如代码依赖或导出的照片),比几个大视频更让它忙碌。
本页内容
fileproviderd为什么占用这么多CPU
它正在索引或同步大量文件:登录某个云服务之后、把一个大文件夹移进去之后,或者在协调另一台电脑上做的更改时。不断变化的文件夹,例如同步文件夹中的构建输出,会让它无休止地忙下去。
偶尔会有某个文件卡住,fileproviderd就一遍又一遍地重试。云服务自己的菜单栏项或App通常会显示是哪个文件没有同步。
如何减轻负载
把不断变化的文件夹,例如node_modules、构建输出和缓存,放在同步文件夹之外。让首次同步在网络良好时完成。如果某个云服务卡住了,就退出并重新打开它的App,或者从它的菜单栏项中暂停再恢复同步。
要为不需要离线使用的文件释放空间,在访达中按住Control键点按它们,对iCloud云盘选择“移除下载项”,其他云服务则选择它们自己的选项,例如把文件设为仅在线可用。fileproviderd会继续列出这些文件,并在你打开时重新下载。
如何查看是哪个云服务在忙
fileproviderd同时为所有云服务提供服务,所以先找出是哪一个在干活会有帮助。
- 打开活动监视器,点按“CPU”标签页,然后在搜索栏中输入
fileprovider。你会看到fileproviderd,旁边还有每个云服务自己的扩展进程,例如iCloud云盘的com.apple.CloudDocs.iCloudDriveFileProvider。 - 比较fileproviderd和各个扩展的“% CPU”。和它一起忙碌的那个扩展,就是有工作要做的云服务。
- 点按“磁盘”标签页,看“写入字节”。数值不断增长,说明有文件正在下载到Mac上。
- 在访达中,从边栏打开该云服务的文件夹:大多数云服务在“位置”下,iCloud云盘在“iCloud”下。文件旁边的进度和错误图标会显示哪些还在传输。
- 要看fileproviderd自己的消息,打开“终端”并运行
log stream --predicate 'process == "fileproviderd"'。反复提到同一个文件的错误,指向的就是卡住的项目。按下Control-C停止。
fileproviderd的正常占用与异常情况
正常:登录某个云服务或移入文件后会很忙,打开需要下载的文件时会短暂忙一下。其余时间都很安静。
值得检查:连续几天都很忙,或者同一个文件始终传不完。常见原因有:
- 云存储中某个文件夹里有海量的小文件。
- 某个文件的名称或路径是云服务无法存储的,例如路径过长。
- 某个文件在另一个App中打开并不断变化,始终没有稳定到可以上传。
- 云存储空间已满,上传被拒绝后不断重试。
- macOS更新后,云服务的App版本过旧。
为什么文件从Mac上消失了,却仍留在访达中
在“系统设置”→你的名字→“iCloud”中打开“优化Mac储存空间”后,磁盘空间不足时macOS会释放空间。Apple表示,iCloud云盘会把最近打开过的文件保留在Mac上,把最早的文件改为按需下载。fileproviderd会移除本地副本,访达则继续列出这个文件,并带有云朵图标。
其他云服务在自己的App中也有类似的设置。打开这样的文件时,fileproviderd会重新下载它,这需要联网。如果你离线时需要某个文件夹,事先把里面的文件打开一次,或者选择云服务提供的“保留在Mac上”选项。
常见问题
Mac上的fileproviderd是什么?
它是在访达中运行云存储的macOS进程,服务于iCloud云盘,以及较新macOS上的Dropbox、OneDrive和Google Drive等App。它在你打开文件时下载文件,并跟踪哪些内容已同步。
fileproviderd为什么CPU占用高?
它在处理大量文件:首次同步、移入云存储的大文件夹,或不断变化的文件夹。某个卡住的文件也可能让它一直重试。
可以停止fileproviderd吗?
退出它只会暂停同步,直到macOS重新启动它。应该在忙碌的那个云服务自己的App中暂停同步,或者把变化频繁的文件夹移出同步存储。
fileproviderd把我的云文件存放在Mac上的哪里?
除iCloud云盘以外的云服务把文件夹放在~/Library/CloudStorage中,每个账户一个文件夹。iCloud云盘的文件放在~/Library/Mobile Documents中。访达会在边栏中显示它们:iCloud云盘在“iCloud”下,其他的在“位置”下。
为什么退出Dropbox后fileproviderd还在运行?
它是为Mac上所有云服务(包括iCloud云盘)提供服务的macOS进程,所以会继续为其他云服务运行。没有任何云服务需要它工作时,它就保持闲置。
相关条目
想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。