Geralmente me deparo com um problema da memória do meu computador, ela enche, não a física mas sim a de cache. Meu sistema inicia com uns 80MB de RAM com o KDE, mas o nosso amigo Firefox X.X tem o costume de alocar muita memória e não saber desalocar, e questões como não limpar o histórico de downloads e o histórico de páginas faz isso aumentar. Portanto ao abrir outros softwares o sistema fica lento. Para resolver este problema há algum tempo atrás vi um post do SMarcell no fórum brasileiro do Slackware Linux.
Segue a solução:
# echo 3 > /proc/sys/vm/drop_caches
Inclusive conversando com o SMarcell ele me passou um script que ele usa no cron para limpar a memória quando ela está cheia, segue o código:
#!/bin/sh
#
# Salve este script no diretório /etc/cron.hourly e dê permissão
# de execução a ele. Desse modo a cada hora sera verificada se a
# porcentagem de memória utilizada pelo sistema atingiu o valor definido
# na variável 'percent'. Caso positivo, o script informará ao kernel
# que este deverá alterar o valor da opção 'drop_caches' para 3.
#
# Mais detalhes: 'man proc' -> /proc/sys/vm/drop_caches.
PATH="/bin:/usr/bin:/usr/local/bin"
# Porcentagem máxima de uso da memória, antes de executar a limpeza: # Obs.: Altere conforme sua necessidade.
percent=80
# Quantidade de memória 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ória com o(s) disco(s):
sync # 'Dropando' cache:
echo 3 > /proc/sys/vm/drop_caches
else # Remove-se as variáveis da memória e finaliza-se o script:
unset percent ramtotal ramlivre ramusada putil
exit $?
fi
# Fim
[2] Comentário enviado por lcnrj em 04/11/2008 - 13:40h
Legal! Parece bem completo.
Eu uso esse script aqui, é o mesmo comando num script mais simples, que encontrei pesquisando por ai. Coloquei ele para ser realizado de hora em hora no cron ( salvo em /usr/bin/limpacache.sh e permissões chmod a+x /usr/bin/limpacache.sh ). Para usar manualmente: sudo limpacache.sh
Funciona mesmo.
===============================
#!/bin/bash
#limpando cache
#o seguinte comando é o responsável pela limpeza
echo 3 > /proc/sys/vm/drop_caches
===============================
[3] Comentário enviado por bigbruno em 29/03/2009 - 06:41h
Gostei do script, pretendo incluir na distribuicao BigLinux, qual nome devo incluir no cabecalho para que o autor do script tenha seus creditos mantidos?