1. 程式人生 > >cron定時任務+釋放記憶體指令碼釋放伺服器快取

cron定時任務+釋放記憶體指令碼釋放伺服器快取

我經常發現伺服器會變得很卡,經過檢查發現伺服器free的記憶體會越來越小,大多數記憶體都被快取使用了。所以我寫了一個自動執行的指令碼來定時釋放記憶體。以下是基於centos 7.3作業系統。

1.釋放記憶體指令碼:
在根目錄建立releasememory.sh,然後把下面的程式碼貼進去,儲存。
該指令碼作用是:查詢free記憶體比例,少於20%就清空快取。

vi releasememory.sh

#!/bin/bash
mem_total=`free -m | awk 'NR==2' | awk '{print $2}'`
mem_free=`free -m | awk 'NR==2' | awk '{print $4}'`
mem_used=`free -m | grep Mem | awk '{print  $3}'`

echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Total:${mem_total}MB][Free:${mem_free}MB][Used:${mem_used}MB]" >> /var/log/mem.log

if (($mem_used != 0)); then
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
mem_warn=0.20
mem_now=`expr $mem_per \> $mem_warn`
if (($mem_now == 0)); then
sync
echo 3 > /proc/sys/vm/drop_caches
echo "OK" >> /var/log/mem.log
fi
fi

2. 給指令碼執行許可權

#chmod +x releasememory.sh

3. 把指令碼新增到系統定時任務:

以下命令是把定時任務放到cron配置檔案裡,作用是每天1:00執行releasememory.sh指令碼。

#echo "0 1 * * * root /root/releasememory.sh" >> /etc/crontab

4.重新載入cron配置和重啟cron服務

#service crond reload
#service crond restart

5.檢視log:

/var/log/mem.log
/var/log/mem_detect.log