У меня есть такой скрипт:
#!/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 ]
И теперь всё работает отлично.