用户缓存清理脚本与自动清理定时任务配置

今天发现 512GB 的磁盘已经使用 400 多 GB 了,表示疑惑。使用 Ubuntu 下的磁盘管理工具查看了下(baobab),发现.cache文件夹占用了 80 多 GB,最大的占用是vscode-cpptools文件夹,其次是uvpip,推测这部分是下载的 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撑爆。