在CentOS6.9上Shell脚本定时释放内存cache
一、写Shell脚本
mkdir -p /var/script/
vim /var/script/freemem.sh
写入以下Shell脚本:
#!/bin/bash
# 当前已使用的内存大小
used=`free -m | awk 'NR==2' | awk '{print $3}'`
# 当前剩余的内存大小
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log
#if [ $free -le 100 ] ; then
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
echo "OK" >> /var/log/mem.log
#else
# echo "Not required" >> /var/log/mem.log
#fi
说明:
其中/proc/sys/vm/drop_caches中的值有4个,分别为0-3:
0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存
二、赋予Shell脚本可执行权限。
chmod u+x freemem.sh

下面说一下怎么使用定时:
(1)Crontab 介绍
crontab命令的功能是在一定的时间间隔调度一些命令的执行。
(2)查看/etc/crontab文件
vim /etc/crontab

在crontab中增加定时任务
(3)文件/etc/crontab中每列任务的描述格式如下:
minute hour day month dayofweek command
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
如果是每五分钟执行一次可改为:
*/5 * * * * /var/script/freemem.sh
(4)crontab服务的启动关闭
/sbin/service crond start # 启动服务
/sbin/service crond stop # 关闭服务
/sbin/service crond status # 服务状态
/sbin/service crond restart # 重启服务
/sbin/service crond reload # 重新载入配置
三、将脚本添加到crond任务,定时执行,每天0点释放一次内存,这个时间可以根据自己需要修改设置。
echo "00 00 * * * root /var/script/freemem.sh" >> /etc/crontab
这种用脚本自动释放缓存的方法在生产环境中是不建议采用的,要是内存不够用,最好还是去找找其他的原因,比如程序设置是否合理,是否突发访问量很大,或者程序设计不合理导致内存溢出等,毕竟操作系统本身设计会考虑各方面的问题,强制腾出cache的大小,可能只是把问题给暂时屏蔽了,不利于判断问题的所在。
在CentOS6.9上Shell脚本定时释放内存cache的更多相关文章
- 使用shell脚本定时执行备份mysql数据库
使用shell脚本定时执行备份mysql数据库 #!/bin/bash ############### common file ################ #本机备份文件存放目录 MYSQLBA ...
- 采用shell脚本定时清理Tomcat日志
1 Shell脚本案例 删除超过30天的日志文件 #!/bin/bash log_path=/mnt/software/apache-tomcat-.M22/logs d=`date +%Y-%m-% ...
- Linux上shell脚本date的用法
在shell脚本里date命令的用法: %% 一个文字的 % %a 当前locale 的星期名缩写(例如: 日,代表星期日) %A 当前locale 的星期名全称 (如:星期日) %b 当前local ...
- shell脚本定时执行|关闭jar文件
编写shell脚本,用于启动.关闭jar程序: #!/bin/bash #description: 启动重启server服务 #需要配置环境变量后才能直接使用java这些变量 export JAVA_ ...
- shell 脚本定时创建月份表
#!/bin/shuser='root'pass='root'name='vfc_sport' # 数据表名定义timestamp=`date -d "next month" +% ...
- Linux上shell脚本,字符串转ASCII码
在shell脚本里,将字符串转ASCII码的方法: [keysystem@localhost ~]$ printf "%d" "'A" [keysystem@l ...
- Shell脚本定时监控
1.建立脚本文件 autostart.sh #!/bin/bashexport JAVA_HOME=/home/java/jdk1.8.0_191export JRE_HOME=$JAVA_HOME/ ...
- centos使用shell脚本定时备份docker中的mysql数据库
shell脚本 #!/bin/bash #容器ID container_id="6b1faea2b4d7" #登录用户名 mysql_user="root" # ...
- linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志
想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell ...
随机推荐
- EntityFramework Core:版本不一致问题
code first 更新数据库时候报版本不对或者未找到错误 解决方法: 在项目文件中添加以下节点: <PropertyGroup> <OutputType>Library&l ...
- vim : 依赖: vim-common (= 2:7.3.429-2ubuntu2) 但是 2:7.3.429-2ubuntu2.1 正要被安装
sudo apt-get purge vim-common sudo apt-get update sudo apt-get upgrade sudo apt-get install vim Just ...
- Spring中@Async
在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后, ...
- PL/SQL Block中对单引号进行转义
可以使用如下的方式: STR := q'[ CREATE TABLE TNAME AS SELECT ... FROM INPUT_TABLE IP WHERE ((IP.DATE_FIELD = T ...
- ApacheTomcat 8 9 安全配置与高并发优化
编辑修改配置文件 [root@DaMoWang ~]# vim /usr/local/tomcat/conf/server.xml 禁用8005端口 telnet localhost 8005 然后输 ...
- IT题库6-同步和异步
同步就是许多线程同时共用一个资源,一个线程在用别的线程就要等待.异步相反,可以不用等待. 同步:发送一个请求,等待返回,然后才能再发送下一个请求:异步:发送一个请求,不等待返回,随时可以再发送下一个请 ...
- Tengine 安装和说明
使用tengine要安装nginx.架构为:LTNMT或LTNMP 1. 官网下载源码包 [root@qc_centos7_5 src]# wget http://tengine.taobao.org ...
- Linq组合查询与分页组合查询结合
1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox& ...
- springmvc <mvc:default-servlet-handler/> & <mvc:annotation-driven>
1. mvc 标签内部加载的基础类: 1). <mvc:view-controller> 1 org.springframework.web.servlet.handler.SimpleU ...
- VS2017不能弹出安装界面的原因.
如果这里选中了放大.100%入坑 解决办法: 禁用视觉主题,和元素,即可安装正常