我有這個腳本:
#!/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 ]
現在運作良好。