ANALYSIS
🛡️ Linux 自动内存缓存清理方案 (Systemd 版本 )
📂 1. 创建缓存清理脚本
创建脚本文件:
PRTCL // BASH
sudo vim /usr/local/bin/cache_cleaner.sh脚本内容
PRTCL // BASH
#!/bin/bash# 内存缓存清理脚本 v1.2# 安全模式:当可用内存 >20% 时不执行清理
MIN_FREE_PERCENT=20 # 触发清理的阈值
echo "[$(date +'%F %T')] 检查内存状态..."
# 获取内存信息(total, used)read -r total used _ <<< $(free -m | awk '/Mem:/{print $2,$3}')# 计算当前"可用率"(使用 available 字段更准确)free_percent=$(( (total - used) * 100 / total ))
if [ "$free_percent" -lt "$MIN_FREE_PERCENT" ]; then echo "内存可用率 ${free_percent}% < ${MIN_FREE_PERCENT}%,执行清理..."
# 安全清理步骤 sync echo 1 > /proc/sys/vm/drop_caches sleep 1 echo 2 > /proc/sys/vm/drop_caches sleep 1 echo 3 > /proc/sys/vm/drop_caches
# 使用 available 字段计算最新可用百分比(更准确) new_free=$(free -m | awk '/Mem:/{printf "%.1f", $7/$2*100}') echo "清理完成 → 当前可用: ${new_free}%"else echo "内存充足 (${free_percent}%),跳过清理"fi设置脚本权限
PRTCL // BASH
sudo chmod 755 /usr/local/bin/cache_cleaner.shsudo chown root:root /usr/local/bin/cache_cleaner.sh⚙️ 2. 配置 Systemd 服务单元
创建服务文件:
PRTCL // BASH
sudo vim /etc/systemd/system/cache_cleaner.service服务配置内容
PRTCL // INI
[Unit]Description=Memory Cache CleanerAfter=syslog.target
[Service]Type=oneshotExecStart=/usr/local/bin/cache_cleaner.shUser=rootProtectSystem=full🕒 3. 创建 Systemd 定时器
创建定时器文件:
PRTCL // BASH
sudo vim /etc/systemd/system/cache_cleaner.timer定时器配置内容
PRTCL // INI
[Unit]Description=Run memory cleaner every 3 hours
[Timer]OnCalendar=*-*-* 0/3:00:00RandomizedDelaySec=300Persistent=true
[Install]WantedBy=timers.target🔧 4. 启用并测试服务
PRTCL // BASH
# 重载 systemd 配置sudo systemctl daemon-reload
# 测试脚本sudo /usr/local/bin/cache_cleaner.sh
# 启用定时器sudo systemctl enable --now cache_cleaner.timer
# 验证状态systemctl list-timers | grep cache_cleanerjournalctl -u cache_cleaner.service -f📊 5. 监控与日志管理
| 命令目的 | 具体命令 |
|---|---|
| 查看最近记录 | journalctl -u cache_cleaner.service -n 10 |
| 跟踪实时日志 | journalctl -u cache_cleaner.service -f |
配置每日日志导出(可选)
PRTCL // BASH
# 编辑 root 的 crontabsudo crontab -e
# 添加以下内容:0 0 * * * journalctl -u cache_cleaner.service --since "1 day ago" > /var/log/memclean_daily.log📝 注意事项
- 脚本会在可用内存低于 20% 时触发清理
- 使用 sync 确保数据安全
- 通过 sleep 间隔确保清理操作平滑执行
- 可以根据实际需求调整定时器间隔
- 建议定期检查日志确保服务正常运行
作者:EchoWang
小红书:汪多多是只猫
B 站:汪多多是只猫
公众号:汪多多是只猫
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.08
Auth_Verified: 2026.04.08
