Tengo este 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
Lo estoy ejecutando a través de cron y veo que se inicia correctamente, pero en realidad nunca escribe el valor y siempre se establece en 0. Por lo tanto, esto:
total used free shared buffers cached
Mem: 64382 27024 37357 0 159 7125
Nunca cambia.
Debo agregar que la ejecución manual funciona bien. /etc/crontab
:
04 14 * * * root /bin/sh /opt/drop_caches.sh
(Acabo de poner un tiempo de prueba ahí).
Respuesta1
He descubierto el problema.
Ya que estaba llamando /bin/sh
cual es dash
, no acepta [[ ]]
. He retocado [[ ]]
.
[[ $CACHE -gt 5000000 ]]
En su lugar usé:
[ $CACHE -gt 5000000 ]
Y está funcionando bien ahora.