本文目录导读:

我来介绍几种自动清理系统缓存的脚本方法,涵盖Windows和Linux系统。
Windows系统
批处理脚本 (.bat)
@echo off echo 正在清理系统缓存... :: 清理Windows临时文件 del /f /s /q "%TEMP%\*.*" 2>nul del /f /s /q %WINDIR%\Temp\*.* 2>nul :: 清理预读取文件 del /f /s /q %WINDIR%\Prefetch\*.* 2>nul :: 清理回收站 rd /s /q C:\$Recycle.Bin 2>nul :: 清理DNS缓存 ipconfig /flushdns :: 清理缩略图缓存 del /f /s /q /a %USERPROFILE%\AppData\Local\Microsoft\Windows\Explorer\*.db 2>nul :: 使用DISM清理系统文件 dism /online /cleanup-image /spsuperseded 2>nul echo 清理完成! pause
PowerShell脚本
# 清理系统缓存
Write-Host "开始清理系统缓存..." -ForegroundColor Green
# 清理临时文件
$tempFolders = @(
"$env:TEMP",
"$env:WINDIR\Temp",
"$env:USERPROFILE\AppData\Local\Temp"
)
foreach ($folder in $tempFolders) {
if (Test-Path $folder) {
Remove-Item "$folder\*" -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "已清理: $folder" -ForegroundColor Yellow
}
}
# 清理DNS缓存
ipconfig /flushdns | Out-Null
Write-Host "DNS缓存已清理" -ForegroundColor Yellow
# 清理Windows更新缓存
Stop-Service wuauserv -Force
Remove-Item "$env:WINDIR\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service wuauserv
Write-Host "Windows更新缓存已清理" -ForegroundColor Yellow
# 清理错误报告
$werFolders = Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Windows\WER" -ErrorAction SilentlyContinue
foreach ($folder in $werFolders) {
Remove-Item $folder.FullName -Recurse -Force -ErrorAction SilentlyContinue
}
Write-Host "清理完成!" -ForegroundColor Green
Linux系统
Shell脚本
#!/bin/bash
echo "开始清理系统缓存..."
# 需要root权限
if [ "$EUID" -ne 0 ]; then
echo "请使用sudo运行此脚本"
exit 1
fi
# 清理包管理器缓存
echo "清理APT缓存..."
apt-get clean
apt-get autoclean
apt-get autoremove -y
# 清理系统日志
echo "清理日志文件..."
journalctl --vacuum-time=7d
find /var/log -type f -name "*.log" -mtime +7 -delete
# 清理临时文件
echo "清理临时文件..."
rm -rf /tmp/*
rm -rf /var/tmp/*
# 清理系统缓存
echo "清理内存缓存..."
sync
echo 3 > /proc/sys/vm/drop_caches
# 清理用户缓存
echo "清理用户缓存..."
for user in /home/*/; do
username=$(basename "$user")
if id "$username" &>/dev/null; then
# 清理thumbnails
find "$user.cache/thumbnails" -type f -delete 2>/dev/null
# 清理浏览器缓存(Chromium/Firefox)
rm -rf "$user.cache/chromium"/* 2>/dev/null
rm -rf "$user.cache/mozilla"/* 2>/dev/null
fi
done
echo "系统缓存清理完成!"
高级清理脚本
#!/bin/bash
# 更全面的系统清理脚本
log_file="/var/log/cleanup.log"
echo "===== 系统清理日志 $(date) =====" | tee -a $log_file
cleanup_system() {
# 清理apt缓存
echo "清理APT缓存..." | tee -a $log_file
apt-get clean 2>&1 | tee -a $log_file
apt-get autoclean 2>&1 | tee -a $log_file
# 清理旧的snap版本
echo "清理旧版Snap..." | tee -a $log_file
snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do
snap remove "$snapname" --revision="$revision" 2>&1 | tee -a $log_file
done
# 清理Docker(如果安装)
if command -v docker &> /dev/null; then
echo "清理Docker缓存..." | tee -a $log_file
docker system prune -a -f 2>&1 | tee -a $log_file
fi
# 清理pip缓存
if command -v pip &> /dev/null; then
echo "清理pip缓存..." | tee -a $log_file
pip cache purge 2>&1 | tee -a $log_file
fi
# 清理conda缓存
if command -v conda &> /dev/null; then
echo "清理conda缓存..." | tee -a $log_file
conda clean -a -y 2>&1 | tee -a $log_file
fi
}
# 执行清理
cleanup_system
echo "清理完成!查看日志: $log_file"
定时自动执行
Windows (任务计划程序)
创建任务计划程序,设置每天执行清理脚本。
Linux (Crontab)
# 编辑crontab crontab -e # 添加定时任务(每周日凌晨2点执行) 0 2 * * 0 /path/to/cleanup_script.sh # 或者每天执行 0 3 * * * /path/to/cleanup_script.sh
安全注意事项
- 备份重要数据:清理前确保重要文件已备份
- 分步执行:首次使用建议分步执行,观察效果
- 权限管理:部分操作需要管理员/root权限
- 测试环境:先在测试环境中验证脚本
- 参数调整:根据实际需求调整清理参数
这些脚本可以帮你自动维护系统健康,建议根据系统配置和使用习惯选择合适的脚本。