Cron job: echo 3 > /proc/sys/vm/drop_caches não está sendo gravado em /proc/sys/vm/drop_caches

Cron job: echo 3 > /proc/sys/vm/drop_caches não está sendo gravado em /proc/sys/vm/drop_caches

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/shqual é dash, ele não aceita [[ ]]. Eu ajustei [[ ]].

[[ $CACHE -gt 5000000 ]]

Em vez disso, usei:

[ $CACHE -gt 5000000 ]

E está funcionando bem agora.

informação relacionada