Bash

Cron 作業:echo 3 > /proc/sys/vm/drop_caches 實際上並未寫入 /proc/sys/vm/drop_caches

  • March 11, 2020

我有這個腳本:

#!/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/shdash所以不接受[[ ]]。我已經調整了[[ ]]

[[ $CACHE -gt 5000000 ]]

我改為使用:

[ $CACHE -gt 5000000 ]

它現在工作正常。

引用自:https://unix.stackexchange.com/questions/572387