Trabajo cron: echo 3 > /proc/sys/vm/drop_caches en realidad no se está escribiendo en /proc/sys/vm/drop_caches

Trabajo cron: echo 3 > /proc/sys/vm/drop_caches en realidad no se está escribiendo en /proc/sys/vm/drop_caches

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/shcual es dash, no acepta [[ ]]. He retocado [[ ]].

[[ $CACHE -gt 5000000 ]]

En su lugar usé:

[ $CACHE -gt 5000000 ]

Y está funcionando bien ahora.

información relacionada