Bash
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
(我只是在那裡放了一個測試時間)。
我已經弄清楚了這個問題。
由於我是呼叫whichis
/bin/sh
,dash
所以不接受[[ ]]
。我已經調整了[[ ]]
。
[[ $CACHE -gt 5000000 ]]
我改為使用:
[ $CACHE -gt 5000000 ]
它現在工作正常。