Linux释放内存脚本

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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进程,最直接的手段还是加内存。




 本文转自 dbapower 51CTO博客,原文链接:http://blog.51cto.com/suifu/1828050,如需转载请自行联系原作者


相关文章
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
21天前
|
Linux Shell Python
Linux执行Python脚本
Linux执行Python脚本
26 1
|
23天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
54 5
|
12天前
|
Prometheus 监控 Cloud Native
【Linux】查看系统内存命令(详细讲解)
【Linux】查看系统内存命令(详细讲解)
|
16天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
|
17天前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
|
17天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
|
18天前
|
Linux Shell
Linux脚本获取输入参数判断文件还是文件路径
Linux脚本获取输入参数判断文件还是文件路径
12 4
|
22天前
|
Linux Shell 调度
linux脚本任务调度
Linux的`crontab`用于计划任务,按照预设时间执行脚本或命令。步骤包括:1) 创建并赋予执行权限的脚本,如`backup.sh`;2) 使用`crontab -e`编辑任务列表;3) 添加cron表达式(如`0 1 * * * /path/to/backup.sh`,表示每天凌晨1点执行脚本);4) 保存并启动/检查cron服务。cron表达式包含分钟、小时、日期、月份和周几字段。根据需求调整表达式以满足不同任务需求。
12 3
|
22天前
|
运维 监控 Linux
linux脚本自动化运维任务
Linux自动化运维通过脚本提升效率,涵盖服务管理(启停服务、异常恢复)、系统监控(资源警报)、日志管理(清理分析)、备份恢复、补丁更新、自动化部署(如Ansible)、网络管理、定时任务(cron)和故障排查。结合shell、Python及工具,形成高效运维体系。
20 3