Cron-Job: echo 3 > /proc/sys/vm/drop_caches wird nicht wirklich nach /proc/sys/vm/drop_caches geschrieben.

Cron-Job: echo 3 > /proc/sys/vm/drop_caches wird nicht wirklich nach /proc/sys/vm/drop_caches geschrieben.

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/shwas 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.

verwandte Informationen