Eu tenho esse script:
#!/bin/bash
# If the cache is greater than 5G, echo 3 > /proc/sys/vm/drop_caches
CACHE=`grep -w "Cached" /proc/meminfo | awk '{ print $2 }'`
if [[ $CACHE -gt 5000000 ]]
then
sh -c "echo 3 > /proc/sys/vm/drop_caches"
else
exit 0
fi
Estou executando-o via cron e vendo-o iniciar com sucesso, mas na verdade ele nunca grava o valor e está sempre definido como 0. Assim:
total used free shared buffers cached
Mem: 64382 27024 37357 0 159 7125
Nunca muda.
Devo acrescentar que a execução manual funciona bem. /etc/crontab
:
04 14 * * * root /bin/sh /opt/drop_caches.sh
(Acabei de colocar um tempo de teste aí).
Responder1
Eu descobri o problema.
Como eu estava ligando /bin/sh
qual é dash
, ele não aceita [[ ]]
. Eu ajustei [[ ]]
.
[[ $CACHE -gt 5000000 ]]
Em vez disso, usei:
[ $CACHE -gt 5000000 ]
E está funcionando bem agora.