次のようなスクリプトがあります:
#!/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 ]
そして今は正常に動作しています。