本文目录导读:

#!/bin/bash
# ============================================
# APT 缓存自动清理脚本
# 功能:安全清理 apt 缓存和不再需要的包
# ============================================
set -e # 遇到错误立即退出
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查 root 权限
check_root() {
if [ "$(id -u)" -ne 0 ]; then
log_error "此脚本需要 root 权限运行,请使用 sudo"
exit 1
fi
}
# 清理 apt 缓存
clean_apt_cache() {
log_info "开始清理 APT 缓存..."
# 1. 清理已下载的包文件 (.deb)
local cache_size_before=$(du -sh /var/cache/apt/archives 2>/dev/null | cut -f1)
log_info "清理前的缓存大小: ${cache_size_before}"
# 执行清理
apt-get clean
local cache_size_after=$(du -sh /var/cache/apt/archives 2>/dev/null | cut -f1)
log_info "清理后的缓存大小: ${cache_size_after}"
log_info "APT 缓存清理完成"
}
# 移除不再需要的依赖包
remove_autoremove() {
log_info "检查并移除不再需要的依赖包..."
# 获取可自动移除的包列表
local autoremove_list=$(apt-get -s autoremove 2>/dev/null | grep "^Remv" | awk '{print $2}')
if [ -z "$autoremove_list" ]; then
log_info "没有需要自动移除的包"
else
log_info "以下包将被移除:"
echo "$autoremove_list"
# 执行自动移除
apt-get autoremove -y
log_info "孤立的依赖包已移除"
fi
}
# 清理部分下载的包
clean_partial() {
log_info "清理部分下载的包..."
if [ -d /var/cache/apt/archives/partial ] && [ "$(ls -A /var/cache/apt/archives/partial 2>/dev/null)" ]; then
rm -rf /var/cache/apt/archives/partial/*
log_info "部分下载的包已清理"
else
log_info "没有需要清理的部分下载包"
fi
}
# 清理 apt 列表缓存(可选)
clean_lists() {
log_warn "是否要清理旧的软件源列表缓存?[y/N]"
read -r response
if [[ "$response" =~ ^[Yy]$ ]]; then
log_info "清理旧的软件源列表..."
# 备份当前列表
if [ -d /var/lib/apt/lists ]; then
# 只清理备份文件,保留当前使用的
apt-get clean
log_info "软件源列表已清理"
fi
else
log_info "跳过清理软件源列表"
fi
}
# 显示磁盘空间信息
show_disk_info() {
log_info "系统磁盘使用情况:"
echo "----------------------------------------"
df -h / /var 2>/dev/null | grep -v "^Filesystem" | awk '{print " "$NF": "$3" / "$2" ("$5")"}'
echo "----------------------------------------"
}
# 主函数
main() {
echo "======================================"
echo " APT 缓存自动清理工具"
echo "======================================"
echo ""
check_root
show_disk_info
# 更新包索引(推荐先更新)
log_warn "是否先更新软件包索引?[y/N]"
read -r update_response
if [[ "$update_response" =~ ^[Yy]$ ]]; then
log_info "更新软件包索引..."
apt-get update
fi
# 执行清理步骤
clean_partial
clean_apt_cache
remove_autoremove
clean_lists
echo ""
log_info "清理完成!"
show_disk_info
echo ""
echo "======================================"
echo " 清理完成"
echo "======================================"
}
# 运行主函数
main
使用方法
创建脚本文件
sudo nano /usr/local/bin/apt-cleanup.sh
粘贴脚本内容
设置执行权限
sudo chmod +x /usr/local/bin/apt-cleanup.sh
运行脚本
sudo /usr/local/bin/apt-cleanup.sh
功能说明
- 清理部分下载的包 - 删除
/var/cache/apt/archives/partial/中不完整的下载 - 清理 apt 缓存 - 执行
apt-get clean,删除所有已下载的 .deb 包 - 自动移除 - 执行
apt-get autoremove,删除不再需要的依赖包 - 清理列表缓存 - 可选清理旧的软件源列表
设置定时任务(可选)
如果你希望自动执行清理:
# 编辑 crontab sudo crontab -e # 添加以下行(每周日凌晨2点执行) 0 2 * * 0 /usr/local/bin/apt-cleanup.sh
注意事项
- ⚠️ 需要 root 权限 - 必须使用 sudo 运行
- 🔒 安全清理 - 脚本使用
set -e,遇到错误会停止 - 📁 不会删除配置文件 - 只清理缓存和不再需要的包
- 💾 可以定制 - 你可以根据需要注释或修改某些步骤
这个脚本适合定期运行,可以帮助保持系统整洁,释放磁盘空间。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播