Задание cron: echo 3 > /proc/sys/vm/drop_caches на самом деле не записывается в /proc/sys/vm/drop_caches

Задание cron: echo 3 > /proc/sys/vm/drop_caches на самом деле не записывается в /proc/sys/vm/drop_caches

У меня есть такой скрипт:

#!/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

Я запускаю его через cron и вижу, что он успешно запускается, но на самом деле он никогда не записывает значение и всегда устанавливается на 0. Таким образом, это:

total       used       free     shared    buffers     cached
Mem:         64382      27024      37357          0        159       7125

Никогда не меняется.

Добавлю, что ручной запуск работает нормально. /etc/crontab: 04 14 * * * root /bin/sh /opt/drop_caches.sh (Я просто указал время тестирования).

решение1

Я разобрался в этом вопросе.

Так как я звонил, /bin/shкоторый есть dash, он не принимает [[ ]]. Я подправил [[ ]].

[[ $CACHE -gt 5000000 ]]

Вместо этого я использовал:

[ $CACHE -gt 5000000 ]

И теперь всё работает отлично.

Связанный контент