当前位置: 首页 > news >正文

自动化释放linux服务器内存脚本

脚本说明

使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。

脚本用到sync系统命令
sync的作用:sync 是一个 Linux 系统命令,用于将文件系统缓存中的数据强制写入磁盘。
在你执行reboot、poweroff、shutdown命令时,系统会默认执行此命令。以防止数据丢失。

脚本

#!/bin/sh
# 脚本名称:FreeMemory.sh
# 脚本功能:当内存占用达到一个阀值时,自动执行释放内存的脚本。
# 作者:北国大人 from CSDN
# 创建时间:202471日
# 最后修改时间:2025331日
# 使用方法:crontab 设置定时任务
# 参数说明:阀值设置85%
# 依赖项:crontab shell
# 日志记录:/var/freememory/FreeMemoryLog.txt
# 示例用法:0 0 * * * /root/FreeMemory.sh 85>>/var/freememory/FreeMemoryLog.txt
# 注意事项:释放内存的风险较低,无须担心,但是严禁频繁执行此操作


# 获取内存信息
total=$(free -m | grep Mem | awk '{print $2}')
used=$(free -m | grep Mem | awk '{print $3}')

# 计算内存使用率
rate=$(($used * 100 / $total))

# 获取当前时间
time=$(date)

echo "############ $time ###############"

# $1 是传递给脚本的参数,表示内存使用率的阈值
if [ $rate -gt $1 ]; then
    echo "rate=$rate    内存使用率超过阈值,开始释放内存!"
    sync
    sleep 10
    echo 1 > /proc/sys/vm/drop_caches
    echo "内存释放成功!"
    used2=$(free -m | grep Mem | awk '{print $3}')
    shifangle=$(($used - $used2))
    echo "内存释放了$shifangle G"
else
    echo "rate=$rate  内存使用率正常"
fi

设置定时任务,每天执行一次即可

#每天执行一次,仅当内存占用达到85%时,才执行此操作。
crontab-e
0 0 * * * /root/FreeMemory.sh 85 >>/var/freememory/FreeMemoryLog.txt

echo 1:如果你只想清理页缓存,保留目录项和 inode,可以使用这个选项。
echo 2:如果你只想清理目录项dentries和 inode,保留页缓存,可以使用这个选项。
echo 3:如果你希望彻底清理所有缓存,可以使用这个选项。

注意事项

性能影响:清理缓存可能会导致系统性能短期下降,因为缓存被清空后,系统需要重新加载数据(会过滤掉无用的)。
谨慎使用:严禁频繁使用,

相关文章:

  • 6-2 赶工中~
  • Https安全
  • ansible条件判断及循环
  • 【系统架构设计师】嵌入式操作系统的定义及特点
  • Spring实现WebScoket
  • UE5学习记录 part13
  • 无人机遥测系统工作与技术难点分析!
  • 本地部署DeepSeek-R1(Dify压力测试和性能调优)
  • GOAT‘S AI早鸟报Part11
  • 在Thinkphp中使用JWT 包括JWT是什么,JWT的优势
  • Crypto加密货币生态构成及较有前景的几个crypto项目
  • uniapp -- 列表垂直方向拖拽drag组件
  • Python第七章05:文件操作综合练习题
  • 游戏引擎学习第198天
  • ②EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • JsonCpp 处理 JSON(现代 C++ 方案)(三)
  • WPF基础知识
  • 关于VUE中v-model响应式失效的问题
  • Spring相关面试题总结
  • docker打包使用有头模式playwright
  • “五一”看什么?这里有一份申城视听指南
  • 人民日报评论员:因势利导对经济布局进行调整优化
  • 中国代表:美“对等关税”和歧视性补贴政策严重破坏世贸规则
  • 上海国际咖啡文化节开幕,北外滩集结了超350个展位
  • 如何反击右翼思潮、弥合社会分裂:加拿大大选镜鉴
  • 工行一季度净赚841亿元降3.99%,营收降3.22%