linux清理进程内存,Linux释放内存脚本

vi recover_mem.sh

#!/bin/bash

##################

#author:rrhelei@126.com#

##################

#系统分配的区总量

mem_total=`free -m |grep Mem | awk '{print  $2}'`

#当前剩余的free大小

mem_free=`free -m |grep Mem | awk '{print  $4}'`

#当前已使用的used大小

mem_used=`free -m |grep Mem | awk '{print  $3}'`

if (($mem_used !=0)); then

#如果已被使用,则计算当前剩余free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0

mem_per=0`echo"scale=2;$mem_free/$mem_total" | bc`

DATA="$(date -d "today"+"%Y-%m-%d-%H-%M") free percent is : $mem_per"

echo $DATA >>/var/log/mem_detect.log

#设置的告警值为20%(即使用超过80%的时候告警)。

mem_warn=0.20

#当前剩余百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 )

mem_now=`expr $mem_per \> $mem_warn`

#如果当前使用超过80%(即剩余小于20%,上面的返回值等于0),释放内存

if (($mem_now == 0)); then

sync

sync

echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries andinodes:

echo 3 > /proc/sys/vm/drop_caches

fi

fi

before sh -x recover_mem.sh

[root@HE3]# free  -m

total       used       free     shared    buffers     cached

Mem:         15948      14774       1173          0        130       7926

-/+ buffers/cache:       6717       9231

Swap:            0          0          0

after sh -x recover_mem.sh

[root@HE3]# free -m

total       used       free     shared    buffers     cached

Mem:         15948       6603       9344          0          1         18

-/+ buffers/cache:       6582       9365

Swap:            0          0          0

可以看出,cache的缓存已被释放。值得注意的是,cache被释放后,对mysql性能影响比较明显的,因为mysql需要重新cache,因此该脚本仅作救急用,只有当free中剩余的内存低于20%的时候,该脚本才会执行,以防止oom kill掉mysql进程,最直接的手段还是加内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值