复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-LINUX自动清

2026.04.08

Linux-自动清理内存缓存脚本及-Systemd-服务配置

Echo HaoRan
Echo HaoRan
ANALYSIS

🛡️ Linux 自动内存缓存清理方案 (Systemd 版本 )#

📂 1. 创建缓存清理脚本#

创建脚本文件:

PRTCL // BASH
Terminal window
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
Terminal window
sudo chmod 755 /usr/local/bin/cache_cleaner.sh
sudo chown root:root /usr/local/bin/cache_cleaner.sh

⚙️ 2. 配置 Systemd 服务单元#

创建服务文件:

PRTCL // BASH
Terminal window
sudo vim /etc/systemd/system/cache_cleaner.service

服务配置内容#

PRTCL // INI
[Unit]
Description=Memory Cache Cleaner
After=syslog.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/cache_cleaner.sh
User=root
ProtectSystem=full

🕒 3. 创建 Systemd 定时器#

创建定时器文件:

PRTCL // BASH
Terminal window
sudo vim /etc/systemd/system/cache_cleaner.timer

定时器配置内容#

PRTCL // INI
[Unit]
Description=Run memory cleaner every 3 hours
[Timer]
OnCalendar=*-*-* 0/3:00:00
RandomizedDelaySec=300
Persistent=true
[Install]
WantedBy=timers.target

🔧 4. 启用并测试服务#

PRTCL // BASH
Terminal window
# 重载 systemd 配置
sudo systemctl daemon-reload
# 测试脚本
sudo /usr/local/bin/cache_cleaner.sh
# 启用定时器
sudo systemctl enable --now cache_cleaner.timer
# 验证状态
systemctl list-timers | grep cache_cleaner
journalctl -u cache_cleaner.service -f

📊 5. 监控与日志管理#

命令目的具体命令
查看最近记录journalctl -u cache_cleaner.service -n 10
跟踪实时日志journalctl -u cache_cleaner.service -f

配置每日日志导出(可选)#

PRTCL // BASH
Terminal window
# 编辑 root 的 crontab
sudo crontab -e
# 添加以下内容:
0 0 * * * journalctl -u cache_cleaner.service --since "1 day ago" > /var/log/memclean_daily.log

📝 注意事项#

  1. 脚本会在可用内存低于 20% 时触发清理
  2. 使用 sync 确保数据安全
  3. 通过 sleep 间隔确保清理操作平滑执行
  4. 可以根据实际需求调整定时器间隔
  5. 建议定期检查日志确保服务正常运行

作者:EchoWang

小红书:汪多多是只猫

B 站:汪多多是只猫

公众号:汪多多是只猫

博客:https://blog.echospace.top

R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.08
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

Linux-自动清理内存缓存脚本及-Systemd-服务配置

Author: CHONGXIReleased: 2026.04.08

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21