Linux系统服务器在使用中内存会随着时间慢慢的变小,已经是经常能见到的事了,这个时候就需要我们去人工干预,来进行内存的释放。本文将使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。
基本流程:
1、编写Shell脚本,检测当前服务器的内存使用率,如果达到了我们预设的值则强制释放内存。
2、将编写好的Shel脚本,添加到Cron定时任务列表中,设置运行周期。
释放缓存的Shell脚本:
如果在终端中我们通常是使用下面的命令来释放内存:
sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息,echo 3 >> /proc/sys/vm/drop_caches 命令是强制释放缓存的命令,下面给出shell脚本freeMemory.sh
脚本中获取并计算了当前内存的使用率,在执行脚本的时候需要加一个参数,也就是我们设置的最大内存使用率,当超过这个值时便会执行释放内存的命令。ok我们的shell脚本保存在了/root/freeMemory.sh.添加定时任务。在定时任务这我们用到了cron这个定时工具,我们这里就不详细解释了,下面只说用法,后面我会写一篇专门的文章来介绍该定时工具。在终端中执行下面的命令,来查看当前的定时任务:
看上面的格式,一共是6列,前五列是时间周期,第6列是我们要执行的命令。前五列的解释如下:
根据上面时间的格式规则我们可以设置我们自己的定时周期,这里我设置了每天的23点执行一个脚本,步骤如下:
1、执行命令crontab -e打开编辑定时配置文件;
2、在文件的最后面添加下面的命令:
上面我们设置了每天的23点执行命令我们的脚本,参数设置70,就是当检测到内存使用率大于70的时候回执行释放缓存命令,后面的>>是重定向命令吗,会将脚本的执行结果写进文件freeMemoryLog.txt中,便于我们查看。