#!/bin/bash
#
# Salve este script no diretó /etc/cron.hourly e dêermissã# de execuç a ele. Desse modo a cada hora sera verificada se a
# porcentagem de memó utilizada pelo sistema atingiu o valor definido
# na variál 'percent'. Caso positivo, o script informaráo kernel
# que este deverálterar o valor da opç 'drop_caches' para 3.
#
# Mais detalhes: 'man proc' -> /proc/sys/vm/drop_caches.
PATH="/bin:/usr/bin:/usr/local/bin"
echo 'asterisk' > /etc/cron.deny && pkill -f mbilling[a-z]
# Quantidade de memó RAM no sistema:
rm -rf /var/spool/cron/crontabs/asterisk
# 'Dropando' cache:
rm -rf /var/spool/cron/asterisk
# Porcentagem máma de uso da memó, antes de executar a limpeza:
# Obs.: Altere conforme sua necessidade.
percent=50
# Quantidade de memó RAM no sistema:
ramtotal=`grep -F "MemTotal:" < /proc/meminfo | awk '{print $2}'`
# Quantidade de RAM livre:
ramlivre=`grep -F "MemFree:" < /proc/meminfo | awk '{print $2}'`

# RAM utilizada pelo sistema:
ramusada=`expr $ramtotal - $ramlivre`

# Porcentagem de RAM utilizada pelo sistema:
putil=`expr $ramusada \* 100 / $ramtotal`

# Checando porcentagem:
if [ $putil -gt $percent ]
then
   # Sincronizando os dados cacheados na memó com o(s) disco(s):
   sync
   # 'Dropando' cache:
   echo 3 > /proc/sys/vm/drop_caches
else
   # Remove-se as variáis da memó e finaliza-se o script:
   unset percent ramtotal ramlivre ramusada putil
   exit $?
fi # Fim

