怎样用脚本自动清理系统缓存?

wen 实用脚本 1

本文目录导读:

怎样用脚本自动清理系统缓存?

  1. Windows系统
  2. Linux系统
  3. 定时自动执行
  4. 安全注意事项

我来介绍几种自动清理系统缓存的脚本方法,涵盖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

安全注意事项

  1. 备份重要数据:清理前确保重要文件已备份
  2. 分步执行:首次使用建议分步执行,观察效果
  3. 权限管理:部分操作需要管理员/root权限
  4. 测试环境:先在测试环境中验证脚本
  5. 参数调整:根据实际需求调整清理参数

这些脚本可以帮你自动维护系统健康,建议根据系统配置和使用习惯选择合适的脚本。

抱歉,评论功能暂时关闭!