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/shを呼び出していたのでdash、 は受け入れられませんでした[[ ]]。 を微調整しました[[ ]]

[[ $CACHE -gt 5000000 ]]

代わりに以下を使用しました:

[ $CACHE -gt 5000000 ]

そして今は正常に動作しています。

関連情報