我有这个脚本:
#!/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 ]
现在运行良好。