Baloo 是什么#

Baloo 是 KDE Plasma 自带的桌面文件搜索引擎(类似 Windows 索引服务 / macOS Spotlight)。

组件说明
baloo_file后台索引进程,递归扫描文件并写入数据库
balooctl6KDE 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/Windows

KDE 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)。

建议(本机实践)#

  1. 开发主战场在 NTFS 上时:优先 balooctl6 disable + purge,比 exclude 更省心。
  2. 若保留 Baloo:至少 config add excludeFolders /run/media/ian/Windows。
  3. 长期:代码仓库 clone 到 Linux 原生分区(如 /home/ian/work/,ext4),I/O 和 IDE 体验都好很多。
  4. 16GB 内存 + 多 Cursor workspace + 浏览器 + 飞书时,关掉 Baloo 可立刻回收 1GB+ 内存。