[url=]PixPin_2026-03-18_15-11-00.png[/url]
[url=]今天刚登上服务器发现没剩多少空间了,然后弄了个脚本把缓存清理了一下[/url]
使用方法
1.创建一个sh文件
vim clean_data.sh
2.赋予权限
chmod +x clean_data.sh
3.执行脚本
./clean_data.sh
[url=][Shell] 纯文本查看 复制代码 #!/bin/bash
# 安全的系统和开发环境清理脚本
# 适用于有 Python/Node.js/Docker 的 Linux 系统
# 设置颜色输出,提升可读性
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 打印欢迎信息
echo -e "${YELLOW}========================================"
echo -e " 系统/开发环境一键清理脚本"
echo -e "========================================${NC}"
echo -e "该脚本会清理以下内容:"
echo -e " 1. Python pip 缓存"
echo -e " 2. Node.js npm/yarn 缓存"
echo -e " 3. Docker 未使用的镜像/容器/卷/缓存"
echo -e " 4. 系统 APT 缓存、旧日志、Snap 旧版本"
echo -e " 5. 项目中的 __pycache__ 临时文件"
echo ""
# 安全确认
read -p "⚠️ 执行前请确保已备份重要数据,是否继续?(y/N) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "${RED}❌ 清理操作已取消${NC}"
exit 1
fi
# ======================== 开始清理 ========================
echo -e "\n${YELLOW}🔍 开始执行清理操作...${NC}"
# 1. 清理 Python 相关
echo -e "\n1. ${YELLOW}清理 Python pip 缓存${NC}"
if command -v pip &> /dev/null; then
pip cache purge 2>/dev/null || echo "pip 缓存清理失败(可能未安装pip)"
fi
if command -v pip3 &> /dev/null; then
pip3 cache purge 2>/dev/null || echo "pip3 缓存清理失败"
fi
echo -e "2. ${YELLOW}清理 __pycache__ 目录${NC}"
# 只清理当前用户目录下的 __pycache__,避免权限问题
find $HOME -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null
echo -e " ${GREEN}✅ __pycache__ 清理完成${NC}"
# 2. 清理 Node.js 相关
echo -e "\n3. ${YELLOW}清理 Node.js npm 缓存${NC}"
if command -v npm &> /dev/null; then
npm cache clean --force 2>/dev/null || echo "npm 缓存清理失败(可能未安装npm)"
echo -e " ${GREEN}✅ npm 缓存清理完成${NC}"
else
echo -e " ${YELLOW}⚠️ 未检测到 npm,跳过${NC}"
fi
echo -e "4. ${YELLOW}清理 yarn 缓存${NC}"
if command -v yarn &> /dev/null; then
yarn cache clean 2>/dev/null || echo "yarn 缓存清理失败"
echo -e " ${GREEN}✅ yarn 缓存清理完成${NC}"
else
echo -e " ${YELLOW}⚠️ 未检测到 yarn,跳过${NC}"
fi
# 3. 清理 Docker 相关(需要 sudo 权限)
echo -e "\n5. ${YELLOW}清理 Docker 未使用资源${NC}"
if command -v docker &> /dev/null; then
echo -e " ⚠️ 清理 Docker 需管理员权限,可能需要输入密码"
sudo docker system prune -a -f --volumes 2>/dev/null || echo "Docker 清理失败(可能无权限/未运行Docker)"
echo -e " ${GREEN}✅ Docker 清理完成${NC}"
else
echo -e " ${YELLOW}⚠️ 未检测到 Docker,跳过${NC}"
fi
# 4. 系统级清理(Debian/Ubuntu)
echo -e "\n6. ${YELLOW}清理系统 APT 缓存${NC}"
if command -v apt &> /dev/null; then
sudo apt autoremove --purge -y 2>/dev/null
sudo apt clean 2>/dev/null
echo -e " ${GREEN}✅ APT 缓存清理完成${NC}"
else
echo -e " ${YELLOW}⚠️ 非 Debian/Ubuntu 系统,跳过 APT 清理${NC}"
fi
echo -e "7. ${YELLOW}清理系统日志(保留最近100M)${NC}"
sudo journalctl --vacuum-size=100M -q 2>/dev/null || echo "日志清理失败(可能无权限)"
echo -e " ${GREEN}✅ 系统日志清理完成${NC}"
echo -e "8. ${YELLOW}清理 Snap 旧版本${NC}"
if command -v snap &> /dev/null; then
sudo snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do
sudo snap remove "$snapname" --revision="$revision" 2>/dev/null
done
echo -e " ${GREEN}✅ Snap 旧版本清理完成${NC}"
else
echo -e " ${YELLOW}⚠️ 未检测到 Snap,跳过${NC}"
fi
# ======================== 清理完成 ========================
echo -e "\n${GREEN}========================================"
echo -e " 清理操作全部完成!"
echo -e "========================================${NC}"
echo -e "📊 当前磁盘使用情况:"
df -h | grep -E 'Filesystem|/dev/vda3|/$' # 只显示根目录/目标分区的使用情况
echo -e "\n${YELLOW}提示:如果需要恢复 Docker 镜像,重新 pull 即可;node_modules 可通过 npm install 恢复${NC}" [/url]
[url=][url=]PixPin_2026-03-18_15-14-04.png[/url][/url] |