Ich habe dieses Skript:
#!/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
Ich führe es über Cron aus und sehe, dass es erfolgreich gestartet wird, aber es schreibt den Wert nie wirklich und er ist immer auf 0 gesetzt. Daher dies:
total used free shared buffers cached
Mem: 64382 27024 37357 0 159 7125
Ändert sich nie.
Ich sollte hinzufügen, dass die manuelle Ausführung problemlos funktioniert. /etc/crontab
:
04 14 * * * root /bin/sh /opt/drop_caches.sh
(Ich habe dort lediglich eine Testzeit eingegeben).
Antwort1
Ich habe das Problem herausgefunden.
Da ich angerufen habe, /bin/sh
was es ist dash
, wird es nicht akzeptiert [[ ]]
. Ich habe es optimiert [[ ]]
.
[[ $CACHE -gt 5000000 ]]
Ich habe stattdessen verwendet:
[ $CACHE -gt 5000000 ]
Und jetzt funktioniert es einwandfrei.