问题描述
几个月以来,在我使用的其中一个桌面 Ubuntu 14.04 系统上,CPU 经常无缘无故地上升到 80-100%。 htop
通常会将责任归于文件系统进程,例如 nemo
或 ntfs
。为了让 CPU 恢复正常,我会终止这些进程,这在某些情况下会导致无法访问文件系统并随后重新启动。
几天前,我注意到每当这种情况发生时,另一个进程总是存在,也使用高 CPU: mediascanner-service-2.0
。一些研究让我找到了 this thread at the Forum,它只是建议将其移除。所以我做了。
最终结果出人意料地是积极的:不仅高 CPU 负载的情况消失了,系统也变得更快了。 Lens 的加速非常显著:找到像 Calc 这样的应用程序现在最多只需要 2 秒,而以前需要大约 20 秒。查找文件现在需要大约 5 秒,而以前需要 30 秒。像 Eclipse 这样的繁重程序启动速度更快,工作空间也更加流畅。磁盘访问频率似乎也整体降低了。
这个 mediascanner2.0
包到底是什么?它是 Unity 7 的一部分还是后验安装的依赖项?是否可以阻止其安装?
更新:在 Seth’s suggestion 之后,可以将此包跟踪到 indicator-session
:
$ sudo aptitude why mediascanner2.0
i indicator-session Recommends indicator-applet (>= 0.2) | indicator-renderer
i A unity8 Provides indicator-renderer
i A unity8 Recommends unity-scope-mediascanner2
pi unity-scope-mediascanner2 Depends mediascanner2.0
显然,mediascanner2.0
(和 Unity 8 shell)是基础 14.04 系统的一部分。剩下要回答的是这个流氓包的确切功能。
最佳答案
mediascanner2.0
是 Unity 8 中用于发现媒体然后播放的包。例如,Unity 8 上的 Core Music App 使用 mediascanner
扫描音乐目录(或任何与此相关的目录),然后播放音乐。由于 Ubuntu 正在向 Unity 8 发展,它默认包含在 Ubuntu iso 中。
mediascanner
正在扫描您的整个硬盘驱动器以发现媒体,因此第一次,它会降低您的计算机速度。最终,它应该缓存它的结果,然后它就不再是资源密集型的了。
您有两个选项可以帮助您解决问题:
-
(首选解决方案)您可以通过创建新文件并将其命名为
.nomedia
来明确告诉mediascanner
不要尝试扫描目录。然后,当mediascanner
到达这个目录时,它甚至不会费心去索引它。理论上,您可以对计算机上的多个目录执行此操作,并且mediascanner
应该停止索引它们。 -
您可以卸载它,这在短期内(直到 Unity 8 成为默认设置)将阻止这种情况发生,但您可能会遇到依赖问题。注意:如果你在做 Ubuntu SDK 开发,
mediascanner
是一个依赖项。
希望这有帮助:)