{"id":2978,"date":"2014-09-10T03:06:31","date_gmt":"2014-09-10T03:06:31","guid":{"rendered":"http:\/\/www.deuzebranaweb.com.br\/?p=2978"},"modified":"2014-09-10T03:06:31","modified_gmt":"2014-09-10T03:06:31","slug":"limpar-o-cache-da-memoria-ram-apenas-quando-necessario-linux-user","status":"publish","type":"post","link":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/2014\/09\/10\/limpar-o-cache-da-memoria-ram-apenas-quando-necessario-linux-user\/","title":{"rendered":"Limpar o cache da mem\u00f3ria RAM apenas quando necess\u00e1rio Linux user"},"content":{"rendered":"<div>Quando deixamos o servidor ligado por muitos dias \u00e9 comum o uso excessivo da mem\u00f3ria devido ao cache n\u00e3o usado.Fiz este script que limpa o cache apenas quando a mem\u00f3ria livre fica abaixo de determinado valor, assim posso deixar ele executando do cron a cada hora e ele s\u00f3 vai limpar o cache quando for realmente necess\u00e1rio (mem\u00f3ria livre abaixo do que voc\u00ea definir).<\/p>\n<p>Para limpar o cache usei:<\/p>\n<p># echo 3 &gt; \/proc\/sys\/vm\/drop_caches<\/p>\n<p>O que s\u00f3 funciona \u00e0 partir do kernel 2.6.16.<\/p>\n<div class=\"centro\"><\/div>\n<\/div>\n<p>[ Download: <a href=\"http:\/\/www.vivaolinux.com.br\/scripts\/download.php?arquivo=clearcache.sh\">clearcache.sh<\/a> ]\u00a0\u00a0 [ <a href=\"http:\/\/www.vivaolinux.com.br\/scripts\/formEnviarVersao.php?codigo=5739\">Enviar nova vers\u00e3o<\/a> ]<\/p>\n<div class=\"cinza\">Vers\u00f5es atualizadas deste script (NOVO)<\/div>\n<div>\n<div><a title=\"Perfil do usu\u00e1rio\" href=\"http:\/\/www.vivaolinux.com.br\/~phoemur\"><img decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/fotos\/tuxsujo.jpg\" alt=\"Linux user\" width=\"80\" height=\"60\" border=\"0\" \/><\/a><\/div>\n<div>\n<p>Publicado por <a title=\"Perfil do usu\u00e1rio\" href=\"http:\/\/www.vivaolinux.com.br\/~phoemur\">Fernando<\/a> em 01\/04\/2013<\/p>\n<p>Changelog: Conforme sugest\u00e3o dos colegas, troquei o grep pelo awk com menos comandos e acrescentei a possibilidade de loggar sempre que limpar o cache. Para isso achei melhor usar o logger, que \u00e9 um utilit\u00e1rio do syslogd e que vai loggar no \/var\/log\/messages.<\/p>\n<form action=\"http:\/\/www.vivaolinux.com.br\/scripts\/download.php\"><input class=\"botao\" type=\"submit\" value=\" DOWNLOAD (1364849742.clearcache.sh)\" \/> (vers\u00e3o 2)<\/form>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<div>\n<div><a title=\"Perfil do usu\u00e1rio\" href=\"http:\/\/www.vivaolinux.com.br\/~phoemur\"><img decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/fotos\/tuxsujo.jpg\" alt=\"Linux user\" width=\"80\" height=\"60\" border=\"0\" \/><\/a><\/div>\n<div>\n<p>Publicado por <a title=\"Perfil do usu\u00e1rio\" href=\"http:\/\/www.vivaolinux.com.br\/~phoemur\">Fernando<\/a> em 08\/05\/2013<\/p>\n<p>Changelog: Nesta nova vers\u00e3o eu implementei a fun\u00e7\u00e3o de daemon, desta forma a pessoa n\u00e3o precisa colocar no crontab, \u00e9 s\u00f3 configurar e executar&#8230;<\/p>\n<p>Tem diversas mudan\u00e7as interessantes no c\u00f3digo: daemon, controle de PID, c\u00e1lculo floating point, controle de processos&#8230;<\/p>\n<p>Uso:<br \/>\n&#8211;help :: Show this Help<br \/>\n&#8211;force :: Drop caches without checking<br \/>\n&#8211;start :: Run in daemon mode<br \/>\n&#8211;stop :: Stop the daemon<br \/>\n&#8211;restart :: Stop and restart daemon<br \/>\n&#8211;meminfo :: Only print memory information<br \/>\n(without arguments) :: Same as start<\/p>\n<form action=\"http:\/\/www.vivaolinux.com.br\/scripts\/download.php\"><input class=\"botao\" type=\"submit\" value=\" DOWNLOAD (clearcache2.sh)\" \/> (vers\u00e3o 3)<\/form>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<div>\n<div><a title=\"Perfil do usu\u00e1rio\" href=\"http:\/\/www.vivaolinux.com.br\/~foxbit3r\"><img decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/fotos\/desconhecido.jpg\" alt=\"Linux user\" width=\"80\" height=\"60\" border=\"0\" \/><\/a><\/div>\n<div>\n<p>Publicado por <a title=\"Perfil do usu\u00e1rio\" href=\"http:\/\/www.vivaolinux.com.br\/~foxbit3r\">euteste da silva<\/a> em 27\/05\/2013<\/p>\n<p>Changelog: Coloquei no script uma valida\u00e7\u00e3o da vers\u00e3o do kernel, pois nem todos possuem essa feature.<br \/>\nE na function clear_cache estava dando problema a linha do if.<\/p>\n<form action=\"http:\/\/www.vivaolinux.com.br\/scripts\/download.php\"><input class=\"botao\" type=\"submit\" value=\" DOWNLOAD (1369683997.clearcache.sh)\" \/> (vers\u00e3o 4)<\/form>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p>[ <a href=\"http:\/\/www.vivaolinux.com.br\/script\/Limpar-o-cache-da-memoria-RAM-apenas-quando-necessario?hide=1\">Esconder c\u00f3digo-fonte<\/a> ]<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_710551\" class=\"syntaxhighlighter nogutter scriptCode bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash preprocessor bold\">#!\/bin\/bash<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash comments\">#<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\">#<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash comments\"># Este script limpa o Cache da Mem\u00f3ria RAM sempre que a mem\u00f3ria livre estiver abaixo de $MEM_MIN<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash comments\"># No caso deixei pra limpar o cache sempre que a mem\u00f3ria livre estiver abaixo de 1GB, adaptar \u00e0s suas necessidades<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash comments\"># Eu deixo este script no cron do root para executar a cada hora, e ele s\u00f3 vai limpar o cache quando for necess\u00e1rio<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash comments\">#<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash comments\"># Escrito por Fernando B. Giannasi - mar\u00e7o\/2013<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash comments\">#<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash comments\"># Refer\u00eancias: <a href=\"http:\/\/blog.philippklaus.de\/2011\/02\/clear-cached-memory-on-ubuntu\/\">http:\/\/blog.philippklaus.de\/2011\/02\/clear-cached-memory-on-ubuntu\/<\/a><\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash comments\">#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"http:\/\/www.vivaolinux.com.br\/dica\/Limpando-a-memoria-cache-no-Linux\">http:\/\/www.vivaolinux.com.br\/dica\/Limpando-a-memoria-cache-no-Linux<\/a><\/code><\/div>\n<div class=\"line number12 index11 alt1\"><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash comments\"># Informa\u00e7\u00f5es da mem\u00f3ria<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">MEM_LIVRE=`<\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/proc\/meminfo<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash string\">\"^MemFree\"<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">tr<\/code> <code class=\"bash plain\">-s <\/code><code class=\"bash string\">' '<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">cut<\/code> <code class=\"bash plain\">-d <\/code><code class=\"bash string\">' '<\/code> <code class=\"bash plain\">-f2` &amp;&amp; MEM_LIVRE=`<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"$MEM_LIVRE\/1024.0\"<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">bc<\/code><code class=\"bash plain\">`<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">MEM_TOTAL=`<\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/proc\/meminfo<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash string\">\"^MemTotal\"<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">tr<\/code> <code class=\"bash plain\">-s <\/code><code class=\"bash string\">' '<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">cut<\/code> <code class=\"bash plain\">-d <\/code><code class=\"bash string\">' '<\/code> <code class=\"bash plain\">-f2` &amp;&amp; MEM_TOTAL=`<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"$MEM_TOTAL\/1024.0\"<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">bc<\/code><code class=\"bash plain\">`<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">MEM_MIN=`<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash plain\">1024`<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash comments\"># S\u00f3 funciona como root, se n\u00e3o for root precisaremos usar o sudo<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">SUDO=`<\/code><code class=\"bash functions\">which<\/code> <code class=\"bash functions\">sudo<\/code><code class=\"bash plain\">`<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">[ <\/code><code class=\"bash string\">\"`whoami`\"<\/code> <code class=\"bash plain\">== <\/code><code class=\"bash string\">\"root\"<\/code> <code class=\"bash plain\">]; <\/code><code class=\"bash keyword\">then<\/code> <code class=\"bash plain\">ROOT=<\/code><code class=\"bash functions\">true<\/code><code class=\"bash plain\">; <\/code><code class=\"bash keyword\">fi<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">[ ! <\/code><code class=\"bash string\">\"`which sudo`\"<\/code> <code class=\"bash plain\">] &amp;&amp; [ !$ROOT ]; <\/code><code class=\"bash keyword\">then<\/code> <code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"N\u00e3o \u00e9 o superusu\u00e1rio e o SUDO n\u00e3o foi encontrado\"<\/code><code class=\"bash plain\">; <\/code><code class=\"bash functions\">exit<\/code> <code class=\"bash plain\">1; <\/code><code class=\"bash keyword\">fi<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"bash comments\"># Finalmente limpando o Cache...<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">[ <\/code><code class=\"bash string\">\"$MEM_LIVRE\"<\/code> <code class=\"bash plain\">-<\/code><code class=\"bash keyword\">le<\/code> <code class=\"bash string\">\"$MEM_MIN\"<\/code> <code class=\"bash plain\">]<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"bash keyword\">then<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"Efetuando limpeza do Cache da mem\u00f3ria...\"<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">[ $ROOT ]; <\/code><code class=\"bash keyword\">then<\/code> <code class=\"bash functions\">sync<\/code><code class=\"bash plain\">; <\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash plain\">3 &gt; <\/code><code class=\"bash plain\">\/proc\/sys\/vm\/drop_caches<\/code><code class=\"bash plain\">; <\/code><code class=\"bash keyword\">else<\/code> <code class=\"bash plain\">$SUDO <\/code><code class=\"bash functions\">sync<\/code><code class=\"bash plain\">;<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash plain\">3 | $SUDO <\/code><code class=\"bash functions\">tee<\/code> <code class=\"bash plain\">\/proc\/sys\/vm\/drop_caches<\/code> <code class=\"bash plain\">&gt; <\/code><code class=\"bash plain\">\/dev\/null<\/code><code class=\"bash plain\">; <\/code><code class=\"bash keyword\">fi<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">MEM_APOS=`<\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/proc\/meminfo<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash string\">\"^MemFree\"<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">tr<\/code> <code class=\"bash plain\">-s <\/code><code class=\"bash string\">' '<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">cut<\/code> <code class=\"bash plain\">-d <\/code><code class=\"bash string\">' '<\/code> <code class=\"bash plain\">-f2` &amp;&amp; MEM_APOS=`<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"$MEM_APOS\/1024.0\"<\/code> <code class=\"bash plain\">| <\/code><code class=\"bash functions\">bc<\/code><code class=\"bash plain\">`<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"Mem\u00f3ria total instalada: $MEM_TOTAL MB\"<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"Mem\u00f3ria livre antes: $MEM_LIVRE MB\"<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"Mem\u00f3ria livre ap\u00f3s: $MEM_APOS MB\"<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"bash keyword\">else<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"N\u00e3o \u00e9 necess\u00e1rio limpar o Cache da mem\u00f3ria\"<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"bash keyword\">fi<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"bash functions\">exit<\/code> <code class=\"bash plain\">0<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>http:\/\/www.vivaolinux.com.br\/script\/Limpar-o-cache-da-memoria-RAM-apenas-quando-necessario<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando deixamos o servidor ligado por muitos dias \u00e9 comum o uso excessivo da mem\u00f3ria devido ao cache n\u00e3o usado.Fiz este script que limpa o cache apenas quando a mem\u00f3ria livre fica abaixo de determinado valor, assim posso deixar ele executando do cron a cada&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[20,16],"tags":[],"class_list":["post-2978","post","type-post","status-publish","format-standard","hentry","category-linux","category-shell"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=2978"}],"version-history":[{"count":0,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2978\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=2978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=2978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=2978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}