本文目录导读:

Linux 系统脚本
基础版本 (清理页缓存、目录项和inode)
#!/bin/bash # 文件名: clean_memory_cache.sh echo "当前内存使用情况:" free -h # 清理之前需要同步文件系统,确保数据写入磁盘 sync # 清理页缓存 (PageCache) echo 1 > /proc/sys/vm/drop_caches # 清理目录项和inode echo 2 > /proc/sys/vm/drop_caches # 清理所有缓存 (页缓存、目录项、inode) echo 3 > /proc/sys/vm/drop_caches echo "缓存已清理完成!" echo "清理后内存使用情况:" free -h
安全版本 (带权限检查和日志)
#!/bin/bash # 文件名: safe_clean_cache.sh LOG_FILE="/var/log/clean_cache.log" DATE=$(date '+%Y-%m-%d %H:%M:%S') # 检查是否为root用户 if [ "$EUID" -ne 0 ]; then echo "$DATE - 错误: 请使用root权限运行此脚本" | tee -a $LOG_FILE exit 1 fi # 获取清理前的内存使用 echo "$DATE - 开始清理缓存" | tee -a $LOG_FILE BEFORE=$(free -h | grep Mem) echo "清理前: $BEFORE" | tee -a $LOG_FILE # 同步并清理 sync echo 3 > /proc/sys/vm/drop_caches # 获取清理后的内存使用 AFTER=$(free -h | grep Mem) echo "清理后: $AFTER" | tee -a $LOG_FILE echo "$DATE - 缓存清理完成" | tee -a $LOG_FILE
自动定时清理 (添加到crontab)
#!/bin/bash # 每天凌晨2点自动清理 # 添加到 crontab: crontab -e # 0 2 * * * /root/scripts/safe_clean_cache.sh # 或者使用此脚本自动设置crontab CRON_JOB="0 2 * * * /root/scripts/safe_clean_cache.sh" (crontab -l 2>/dev/null | grep -v "$CRON_JOB"; echo "$CRON_JOB") | crontab - echo "已设置每天凌晨2点自动清理缓存"
Windows 系统脚本
PowerShell 脚本
# 文件名: Clean-MemoryCache.ps1
Write-Host "正在清理内存缓存..." -ForegroundColor Green
# 方法1: 使用系统API清理
$Method = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
# 方法2: 使用WMI清理工作集
$Processes = Get-Process
foreach ($Process in $Processes) {
try {
$Process.Refresh()
[System.GC]::Collect()
} catch {
# 忽略无法访问的进程
}
}
# 方法3: 清理专用工作集
$OS = Get-WmiObject Win32_OperatingSystem
$OS.FreePhysicalMemory
Write-Host "内存缓存清理完成!" -ForegroundColor Green
Write-Host "当前可用内存: $(Get-WmiObject Win32_OperatingSystem | Select-Object FreePhysicalMemory)" -ForegroundColor Cyan
批处理脚本 (.bat)
@echo off内存缓存清理工具
echo 正在清理Windows内存缓存...
echo.
:: 清理内存工作集
powershell -Command "& {[System.GC]::Collect(); [System.GC]::WaitForPendingFinalizers(); Write-Host '缓存清理完成!' -ForegroundColor Green}"
:: 显示内存信息
wmic OS get FreePhysicalMemory,TotalVisibleMemorySize /format:table
echo.
echo 清理完成!
pause
macOS 系统脚本
#!/bin/bash # 文件名: clean_mac_cache.sh echo "当前内存使用情况:" vm_stat # 清理内存缓存 (需要root权限) sudo purge echo "缓存已清理完成!" echo "清理后内存使用情况:" vm_stat | head -10
通用Python脚本 (跨平台)
#!/usr/bin/env python3
# 文件名: clean_cache.py
import os
import platform
import subprocess
import sys
def clean_linux_cache():
"""清理Linux系统缓存"""
if os.geteuid() != 0:
print("错误: 需要root权限")
return False
os.system('sync')
os.system('echo 3 > /proc/sys/vm/drop_caches')
print("Linux缓存清理完成")
return True
def clean_windows_cache():
"""清理Windows系统缓存"""
import ctypes
# 使用Windows API清理
try:
ctypes.windll.kernel32.SetProcessWorkingSetSize(
ctypes.windll.kernel32.GetCurrentProcess(), -1, -1
)
print("Windows缓存清理完成")
return True
except Exception as e:
print(f"清理失败: {e}")
return False
def clean_mac_cache():
"""清理macOS系统缓存"""
try:
subprocess.run(['sudo', 'purge'], check=True)
print("macOS缓存清理完成")
return True
except subprocess.CalledProcessError:
print("清理失败,需要root权限")
return False
def main():
system = platform.system()
if system == "Linux":
clean_linux_cache()
elif system == "Windows":
clean_windows_cache()
elif system == "Darwin": # macOS
clean_mac_cache()
else:
print(f"不支持的操作系统: {system}")
sys.exit(1)
if __name__ == "__main__":
main()
使用示例和注意事项
Linux脚本使用:
# 赋予执行权限 chmod +x safe_clean_cache.sh # 使用root运行 sudo ./safe_clean_cache.sh
重要提示:
- Linux清理缓存:Linux的
drop_caches功能是安全的,不会删除程序数据,只会释放未使用的缓存 - Windows清理:Windows没有直接的命令行清理缓存工具,上述脚本通过.NET内存管理和进程优化来实现
- 权限要求:Linux和macOS需要root/sudo权限
- 频率控制:不建议过于频繁清理,可能影响性能,建议每天1-2次
- 服务器环境:如果是生产服务器,谨慎使用,可能需要评估对数据库等应用的影响
选择合适的脚本,根据您的操作系统和需求进行使用。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播