root権限なしでLinuxキャッシュを消去する

root権限なしでLinuxキャッシュを消去する

キャッシュを消去するには通常電話してください。

# echo 3 | tee /proc/sys/vm/drop_caches

これにはroot権限が必要です。なぜ時々これを行うべきですか?一部のプログラムのランタイムに大きな影響を与える可能性があるためです。私の質問は:スーパーユーザー権限なしでどのようにこれを行うことができますか?特に、次の2つのケースです。

1)私/ユーザーにはroot権限がありません。一般ユーザーが上記のコマンドを実行できるようにシステム管理者ができることはありますか?

2)キャッシュ削除呼び出しはシェルスクリプト内で行われ、スクリプト全体はスーパーユーザー権限で実行できません。たとえば、 "mpirun"を呼び出すこのスクリプトの複数のインスタンスがあるため、rootとして実行しないでください。実際には数行しか必要ありませんが、スクリプト内のすべてのエントリをrootとして実行するのは私にとっては良い習慣ではないようです。

編集:言及を忘れました:上記のコマンドはrootとしてログインした場合にのみ機能します。それ以外の場合、コマンドは次のようになります。echo 3 | sudo tee /proc/sys/vm/drop_caches

ベストアンサー1

この回答を試してみましょう。 OPはどのOSが使われているのか言っていないので、少し一般的に説明します。
まず、free_os_cache.sh

#!/bin/sh
# Description
# Forces the OS to clear OS caches

# Run a sync to reduce dirty caches
sync

# Tell the OS to not make warnings
echo 4 | tee /proc/sys/vm/drop_caches

# Tell the OS to clear caches
echo 3 | tee /proc/sys/vm/drop_caches

# Wait a tiny bit, just for safety (may not be necessary)
sleep 5

# Reset to 0
echo 0 | tee /proc/sys/vm/drop_caches

exit

その後、実行を許可します。
chmod 755 free_os_cache.sh

次に、これをsudoersファイルに追加します。
ALL = /path_to_file/free_os_cache.sh

これで、ユーザーは次のコマンドを実行できます。
sudo /path_to_file/free_os_cache.sh

これは、特定の環境に合わせて調整するのに十分近いはずです。
$0.02

おすすめ記事