Baloo 是什么#
Baloo 是 KDE Plasma 自带的桌面文件搜索引擎(类似 Windows 索引服务 / macOS Spotlight)。
| 组件 | 说明 |
|---|---|
baloo_file | 后台索引进程,递归扫描文件并写入数据库 |
balooctl6 | KDE 6 下的命令行管理工具(Fedora 44 / Plasma 6) |
| 索引库 | 默认在 ~/.local/share/baloo/index,可达数 GB |
用途:KDE 启动器 / Dolphin 里按文件名、内容快速搜索。
开发场景下通常用不到——搜代码靠 IDE / rg,Baloo 反而可能拖慢系统。
典型问题(开发机 + 双系统)#
在 HP Pavilion Aero(Fedora 44 / KDE Plasma 6)上遇到过:
baloo_file占 ~1.7GB 内存,进程状态 DN(卡在磁盘 I/O)- 索引库 ~4GB
- 代码仓库放在 NTFS 分区
/run/media/ian/Windows/...(fuseblk 挂载) - Baloo 扫 NTFS + Cursor / git 文件监听叠加 → 整机卡顿、swap 暴涨
balooctl6 status 在 I/O 阻塞时可能卡几十秒才返回,本身也是症状。
常用命令#
# 查看状态(索引大小、文件数)
balooctl6 status
# 暂停 / 恢复
balooctl6 suspend
balooctl6 resume
# 禁用 / 启用(禁用后重启也不会自动索引)
balooctl6 disable
balooctl6 enable
# 删除索引数据库(释放磁盘,需重新 enable 才会再建)
balooctl6 purge
# 索引占用空间
balooctl6 indexSize
# 紧急:进程仍占内存时
killall baloo_file开发机推荐: 直接 balooctl6 disable,必要时 balooctl6 purge 清掉几 GB 索引库。
排除目录(excludeFolders)#
踩坑:excludePath 不存在#
# ❌ 错误 —— 会报「无法找到配置参数」
balooctl6 config add excludePath /run/media/ian/WindowsKDE 6 正确参数名是 excludeFolders:
# ✅ 正确
balooctl6 config add excludeFolders /run/media/ian/Windows注意: 添加时路径必须已挂载存在,否则报「路径不存在」。NTFS 分区没挂上时先 mount 再执行。
其它 config 子命令#
# 列出所有可改参数
balooctl6 config list
# 查看当前排除目录
balooctl6 config ls excludeFolders
# 删除排除项
balooctl6 config rm excludeFolders /run/media/ian/Windows大坑:config ls excludeFolders 显示空 ≠ 没配上#
KDE 6 的 balooctl6 config ls excludeFolders 经常读不出 exclude folders[$e]=...
这种数组格式,输出一片空白;config rm 也会跟着误报「不在排除文件夹的列表中」。
这是 CLI 的显示 bug,不代表配置无效。 config add 其实已经写进去了。
正确验证方式 —— 直接看配置文件:
grep 'exclude folders' ~/.config/baloofilerc
# 能看到 exclude folders[$e]=/run/media/ian/Windows/ 就是生效了或走图形界面:系统设置 → 搜索 → 文件搜索 → 排除的文件夹。
以 grep baloofilerc / 图形界面为准,别信 config ls 的空输出。
可配置项摘要:
| 参数 | 含义 |
|---|---|
excludeFolders | 不索引的目录 |
includeFolders | 仅索引这些目录(若配置了则相当于白名单) |
excludeFilters | 按文件名模式排除(默认已含 .git、node_modules 等) |
excludeMimetypes | 按 MIME 类型排除 |
contentIndexing | 是否索引文件内容 |
hidden | 是否索引隐藏文件 |
配置写入 ~/.config/baloofilerc,例如:
exclude folders[$e]=/run/media/ian/Windows/改完 exclude 后建议:
balooctl6 suspend
killall baloo_file
balooctl6 resume # 或 disable,看是否还需要 Baloo重建索引(重新启用)#
之前 disable / purge 之后想重新用回 Baloo:
# 1. 先确认要排除的盘还在列表里(建议保留 NTFS 分区)
grep 'exclude folders' ~/.config/baloofilerc
# 没有就补(路径必须已挂载):
balooctl6 config add excludeFolders /run/media/ian/Windows
# 2. 启用并开始索引
balooctl6 enable
# 3. 看进度
balooctl6 status # 文件数、库大小
balooctl6 monitor # 实时监视,Ctrl+C 退出purge过的话索引库是空的,enable会从 0 全量重建。- 首次全量扫
/home可能几十分钟,期间 CPU/磁盘有占用属正常。 - disable 后
baloofilerc里会留Indexing-Enabled=false,enable会改回来。
只索引 home(推荐,避免扫全盘)#
代码在 NTFS、日常文件在 /home 时,可用白名单只扫 home:
balooctl6 config add includeFolders /home/ian
balooctl6 enable配了 includeFolders 后 Baloo 主要只索引这些目录;
NTFS 分区仍建议保留在 excludeFolders 里双保险。
图形界面#
系统设置 → 搜索 → 文件搜索(Baloo)
- 关闭「启用文件搜索」= 等同
disable - 打开「启用文件搜索」= 等同
enable(会开始/继续索引) - 可在此添加不索引的文件夹
与 excludeFilters 的区别#
~/.config/baloofilerc 里默认已有很长的 exclude filters,排除的是文件类型 / 目录名(如 .git、__pycache__),不会按挂载点排除整盘。
整块 NTFS 必须用 excludeFolders,或干脆 disable。
排查速查#
# 看谁占内存、是否 D 状态(等磁盘)
ps -eo pid,stat,rss,comm --sort=-rss | head -10
# Baloo 索引多大
du -sh ~/.local/share/baloo/
# 内存 / swap
free -h进程状态 DN 中的 D = 不可中断睡眠,在等慢盘(常见于扫 fuse/NTFS)。
建议(本机实践)#
- 开发主战场在 NTFS 上时:优先
balooctl6 disable+purge,比 exclude 更省心。 - 若保留 Baloo:至少
config add excludeFolders /run/media/ian/Windows。 - 长期:代码仓库 clone 到 Linux 原生分区(如
/home/ian/work/,ext4),I/O 和 IDE 体验都好很多。 - 16GB 内存 + 多 Cursor workspace + 浏览器 + 飞书时,关掉 Baloo 可立刻回收 1GB+ 内存。