定时释放Linux/CentOS缓存

定时释放Linux/CentOS缓存的脚本(yl_dropcaches)如下:  

  1. #!/bin/bash  
  2. used=`free -m | awk 'NR==2' | awk '{print $3}'`  
  3. free=`free -m | awk 'NR==2' | awk '{print $4}'`  
  4.   
  5. echo "===========================" >> yl_dropcaches.log  
  6. date >> yl_dropcaches.log  
  7. echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >>  yl_dropcaches.log  
  8.   
  9. # drop caches when the free memory less than 10G  
  10. if [ $free -le 10000 ] ; then  
  11.  #sync && echo 1 > /proc/sys/vm/drop_caches  
  12.  #sync && echo 2 > /proc/sys/vm/drop_caches  
  13.  sync && echo 3 > /proc/sys/vm/drop_caches  
  14.  echo "OK" >>  yl_dropcaches.log  
  15. else  
  16.  echo "Not required" >> yl_dropcaches.log  
  17. fi  
#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`

echo "===========================" >> yl_dropcaches.log
date >> yl_dropcaches.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >>  yl_dropcaches.log

# drop caches when the free memory less than 10G
if [ $free -le 10000 ] ; 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" >>  yl_dropcaches.log
else
 echo "Not required" >> yl_dropcaches.log
fi

改为可执行(chmod +x yl_dropcaches)后,将其加入定时任务中:

  1. echo '*/30 * * * * sh /home/yl_dropcaches' >> /var/spool/cron/root  
echo '*/30 * * * * sh /home/yl_dropcaches' >> /var/spool/cron/root

然后,重启一下即可(service crond restart)。
CentOS默认会将crontab设置为开启的状态; 可查看其状态或开启:service crond status/start/stop/restart/reload  可以用以下命令来操作crontab: crontab -l #查看List   crontab -e #编辑Edit crontab -r #删除Remove crontab的规则(cat /etc/crontab)如下:

  1. # Example of job definition:  
  2. # .---------------- minute (0 - 59)  
  3. # |  .------------- hour (0 - 23)  
  4. # |  |  .---------- day of month (1 - 31)  
  5. # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...  
  6. # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat  
  7. # |  |  |  |  |  
  8. # *  *  *  *  * user-name command to be executed  
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

从左至右,每个*分别代表:分,时,日,月,周;最后为要执行的命令;


其中* / - , 这些通配符的含义为:

  1. *  表示所有数值,如第一位使用* 表示每分钟    
  2. /  表示每,如第一位使用 */5 表示每5分钟    
  3. -  表示数值范围,如第二位使用2-4表示2点到4点    
  4. ,  表示离散的多个数值,如第2位使用6,8 表示6点和8点    
  5. 指定"步长":8-14/2 表示8,10,12,14    
  6. 指定列表:比如 "1,2,3,4″,"0-4,8-12″   
posted @ 2018-01-02 10:20  zxiaocheng  阅读(1088)  评论(0编辑  收藏  举报