在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 ...
随机推荐
- Python环境——安装扩展库
一.修改easy_install源 在操作用户家目录添加一个文件 cat >> ~/.pydistutils.cfg <<EOF [easy_install] index-ur ...
- vue中动态样式不起作用? scoped了解一下
vue中style标签使用属性scoped的注意事项 style上添加属性scoped可以实现样式私有化,但是在使用动态样式时,样式会不起作用.可以先去掉scoped
- Python多维数组切片
1. array如果维度多了,就变成ndarray. 2. list切片类似C数组,多维度分别用”[]“索引,单维度切片用”:“,如: >>> a [[1, 2, 3], [4, 5 ...
- Vue学习2:模板语法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- angularjs简单介绍和特点
首先angular是一个mvc框架, 使用mvc解耦, 采用model, controller以及view的方式去组织代码, 会将一个html页面分成若干个模块, 每个模块都有自己的scope, se ...
- 通过Shell脚本将VSS项目批量创建并且提交迁移至Gitlab
脚本运行环境:Git Bash 系统环境:Windows 10 Pro 1709 VSS版本:Microsoft Visual SourceSafe 2005 我的VSS工作目录结构如下: D:\wo ...
- [WDS] Warnings while compiling. vue 项目运行控制台输出太多警告信息
vue项目运行控制台输出太多警告信息,我们需要vue 忽略警告, 解决方法:找到build/webpack.base.conf.js 文件 注释掉: // ...(config.dev.useEsl ...
- 让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本
让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本 运用Excel2Json2Object插件将xml表格转为Object导入脚本 下载地址 ...
- 3、SpringBoot 集成Storm wordcount
WordCountBolt public class WordCountBolt extends BaseBasicBolt { private Map<String,Integer> c ...
- 3、SpringBoot集成Storm WorldCount
RandomSentenceSpout //数据源,在已知的英文句子中,随机发送一条句子出去. public class RandomSentenceSpout extends BaseRichSpo ...