天天看點

linux定時釋放緩存,定時釋放Linux/CentOS緩存

定時釋放Linux/CentOS緩存的腳本(yl_dropcaches)如下:

#!/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

#!/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 +xyl_dropcaches)後,将其加入定時任務中:

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)如下:

# 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

# 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

從左至右,每個*分别代表:分,時,日,月,周;最後為要執行的指令;

其中* / - , 這些通配符的含義為:

*  表示所有數值,如第一位使用* 表示每分鐘

/  表示每,如第一位使用 */5 表示每5分鐘

-  表示數值範圍,如第二位使用2-4表示2點到4點

,  表示離散的多個數值,如第2位使用6,8 表示6點和8點

指定"步長":8-14/2 表示8,10,12,14

指定清單:比如 "1,2,3,4″,"0-4,8-12″