在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 restart   # 重启服务

/sbin/service crond reload    # 重新载入配置

三、将脚本添加到crond任务,定时执行,每天0点释放一次内存,这个时间可以根据自己需要修改设置。

echo "00 00 * * * root /var/script/freemem.sh" >> /etc/crondtab

这种用脚本自动释放缓存的方法在生产环境中是不建议采用的,要是内存不够用,最好还是去找找其他的原因,比如程序设置是否合理,是否突发访问量很大,或者程序设计不合理导致内存溢出等,毕竟操作系统本身设计会考虑各方面的问题,强制腾出cache的大小,可能只是把问题给暂时屏蔽了,不利于判断问题的所在。

原文地址:https://www.cnblogs.com/opsprobe/p/10785568.html

时间: 2024-08-29 13:59:11

在CentOS6.9上Shell脚本定时释放内存cache的相关文章

采用shell脚本定时清理Tomcat日志

1 Shell脚本案例 删除超过30天的日志文件 #!/bin/bash log_path=/mnt/software/apache-tomcat-9.0.0.M22/logs d=`date +%Y-%m-%d` d90=`date -d'30 day ago' +%Y-%m-%d` #cd ${log_path} && cp catalina.out $log_path/cron/catalina.out.$d.log #echo > catalina.out rm -rf $l

shell脚本定时执行php程序

首先写好你需要执行的php程序 我这里呢就是一个PDO链接 写入一个时间 然后我们写一个shell脚本来执行这个php程序 就单纯的一个执行php程序的shell就写好了,然后咱们运行一下 好,显示插入成功,证明这个shell是可以执行的. 然后咱们写一个crontab的定时任务 然后介绍一下五个星星分别表示什么: minute - 分钟 ,从0到59之间的任何整数 hour - 小时, 从0到23之间的任何整数 day - 天, 从1到31之间的任何整数(如果指定了月份,必须是该月份的有效日期

【sehll学习】linux运维一个简单shell脚本监控系统内存

学习shell脚本入门后,慢慢要尝试编写一些脚本练练手,在这先简单的学习写个系统内存的监控. 1.首先先要确定一下截取一下需要关注的内存使用值,可使用free 命令来操作 free -m 显示 一般在监控内存是我们都是截取 第三行(-/+ buffers/cache)的值.确定后可以使用管道线和grep命令来获取这个的值. free -m | grep - | awk  '{print $4}' 获取到他的值为  858 当中 grep -  就是匹配一下要选取的内容,不太熟悉的可以学习一下gr

shell脚本定时备份数据库

脚本代码: 新建文件back_db.sh #!/bin/bash TODAYTIME="`date +%Y%m%d`" DBNAME="test mysql" DUMPPATH="/usr/local/webserver/mysql/bin/mysqldump" HOST="xxx" USER="xxx" PASSWD="xxx" DB_FILE="/home/data/bac

shell脚本定时后台执行

1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh & 2. 使用nohup在后台执行命令 使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉.要避免这种情况,你可以使用nohup命令,如下所示: $ nohup ./my-shell-script.sh & 3. 使用screen执行命令 通过nohup和&符号在后台执行命令

shell脚本定时清除messages日志及TAG为none的docker images

#!/bin/bashlogstatus=du -sh /var/log/messagesdocker_image=docker imagesdocker_none=docker images|grep nonedocker_rm=docker images|grep none|awk '{print $3 }'disk=df -hcleanlog(){echo "######start clean messages#######"echo "目前日志大小 $logstatu

shell脚本编写监控内存并发送邮件

1.准备发送邮件的工具: #!/usr/bin/python# -*- coding: UTF-8 -*-import sysimport smtplibimport email.mime.multipartimport email.mime.text server = 'smtp.163.com'port = '25' def sendmail(server,port,user,pwd,msg): smtp = smtplib.SMTP() smtp.connect(server,port)

Shell脚本使用汇总整理

一.Shell脚本常用的头部格式: 头部的作用就是告知linux此脚本的类型: 常用的头部格式如下:(/bin/bash,是bash的路径,如果不知道路径可以通过which bash进行查看,其它命令的路径也是类似查看的) (1)#!/bin/bash:普通的linux脚本,也是最常用的,不需要交互: (2)#!/usr/bin/expect:可以自动交互的linux脚本,有可能需要安装expect,如果linux服务器上没有此expect命令的话. 二.Shell脚本中如何执行Linux或自定

shell脚本批量/单独启动、停止、重启java独立jar程序

本人最近半年使用阿里dubbo做开发,并在公司内部大力进行推广,将原来一个笨重且不易于维护的大项目切分成多个相对独立的java程序,好处是显而易见的,但是随着切分的独立运行程序包越来越多,程序的部署变成了一件非常头痛的问题,无耐之下,本人想到可否写一个shell脚本来批量/单独启动.停止.重启这些独立的java程序,之前没有写过shell脚本,研究二天后,终于将这个脚本写出来了,以后部署起来方便多了,废话不多说,直接贴上shell脚本,有需要的朋友可以根据自己项目修改前面的程序代码数组.程序名称