天天看點

linux定時腳本釋放記憶體,Linux定時釋放緩存Shell腳本實作自動化運維

使用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是不需要重新啟動的,檔案儲存後會自動生效。