用户缓存清理脚本与自动清理定时任务配置
今天发现 512GB 的磁盘已经使用 400 多 GB 了,表示疑惑。使用 Ubuntu 下的磁盘管理工具查看了下(baobab),发现.cache文件夹占用了 80 多 GB,最大的占用是vscode-cpptools文件夹,其次是uv和pip,推测这部分是下载的 python 包缓存。
占用太大了,不得不清理,但是又不希望最近的一些内容被清理(避免再次缓存),因此让大模型生成了一个 bash 脚本,清理文件夹内容,同时只清理 30 天以上未访问的文件,避免近期多次访问的文件重复缓存。记录一下。
脚本内容(基于 Bash)
定期清理~/.cache超过 30 天没有访问的缓存的脚本。
#!/bin/bash
# 自动清理 ~/.cache 中超过 30 天未使用的文件
CACHE_DIR="$HOME/.cache"
echo "清理 $CACHE_DIR 中超过 30 天未访问的缓存..."
# 使用 find 删除最近 30 天未访问的文件和文件夹
find "$CACHE_DIR" -type f -atime +30 -print -delete
find "$CACHE_DIR" -type d -empty -delete
echo "清理完成!"
使用方法
1. 保存脚本
mkdir ~/.local/bin/bash && cd ~/.local/bin/bash
nvim ~/.local/bin/bash/clean_cache.bash
将自动清理的脚本代码粘贴进去,保存并退出。
2. 赋予可执行权限
chmod +x ~/.local/bin/bash/clean_cache.bash
3. 手动执行测试
~/.local/bin/bash/clean_cache.bash
这会清理超过 30 天没有访问的缓存。
设置定期清理
通过创建 systemd 定时任务实现。
mkdir -p ~/.config/systemd/user
nvim ~/.config/systemd/user/clean-cache.service
写入如下内容:
[Unit]
Description=Clean old cache files
[Service]
ExecStart=/home/你的用户名/.local/bash/clean_cache.bash
再创建一个 timer:
[Unit]
Description=Run clean cache daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
通过以下命令启用。
systemctl --user enable --now clean-cache.timer
这样就可以每天自动清理缓存了,磁盘不会莫名其妙被~/.cache撑爆。