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/shdash,所以不接受[[ ]]。我已经调整过了[[ ]]

[[ $CACHE -gt 5000000 ]]

我改为使用:

[ $CACHE -gt 5000000 ]

现在运行良好。

相关内容