使用Linux伺服器的使用者應該都知道,Linux在使用的時候,可用記憶體會随着時間慢慢的變小,最終可能到80%-90%,這個時候就需要我們去人工幹預,來進行魂村的釋放。
本文将使用Linux的Cron定時任務結合Shell腳本來實作自動化的記憶體釋放。
基本流程
1、編寫Shell腳本,檢測目前伺服器的記憶體使用率,如果達到了我們預設的值則強制釋放記憶體。
2、将編寫好的Shel腳本,添加到Cron定時任務清單中,設定運作周期。
釋放緩存的Shell腳本
如果在終端中我們通常是使用下面的指令來釋放記憶體
sync
echo3>>/proc/sys/vm/drop_caches
sync指令用于強制被改變的内容立刻寫入磁盤,更新超塊資訊
echo 3 >> /proc/sys/vm/drop_caches 指令是強制釋放緩存的指令
下面給出shell腳本freeMemory.sh
#!/bin/sh
#記憶體總量
total=$(free-m|grep Mem |awk'{print $2}')
#已使用記憶體
used=$(free-m|grep Mem |awk'{print $3}')
#記憶體使用率
rate=$(($used*100/$total))
time=date
echo"############$(date)###############"
#$1 is max Mem
if[$rate-gt$1]
then
echo"rate=$rate freeMemory start!"
sync
echo 3 >> /proc/sys/vm/drop_caches
echo"FreeMemory Success!"
else
echo"rate=$rate Memory is normal"
fi
1、執行指令crontab -e打開編輯定時配置檔案
2、在檔案的最後面添加下面的指令:
0 23 * /root/freeMemory.sh 70>>/root/freeMemoryLog.txt
上面我們設定了每天的23點執行指令我們的腳本,參數設定70,就是當檢測到記憶體使用率大于70的時候回執行釋放緩存指令,後面的>>是重定向指令嗎,會将腳本的執行結果寫進檔案freeMemoryLog.txt中,便于我們檢視。
cron是不需要重新啟動的,檔案儲存後會自動生效。