web-dev-qa-db-ja.com

Linuxの空のバッファキャッシュコマンドのアクセス許可が拒否されました

次のコマンドを使用してキャッシュをフラッシュしています。

# sync; echo 3 > /proc/sys/vm/drop_caches
# sync; echo 2 > /proc/sys/vm/drop_caches
# sync; echo 1 > /proc/sys/vm/drop_caches

上記のコマンドのいずれかを使用すると、次のようになります。

-bash: /proc/sys/vm/drop_caches: Permission denied

CentOS 6.5を実行している私のシステムでは、SSH経由でrootとしてログインしました。

助言がありますか?

1
Mina Hafzalla

最初のコマンドで十分なのに、なぜ3つのコマンドを実行しているのかわかりません。

$ sync; echo 3 > /proc/sys/vm/drop_caches

これにより、無料のページキャッシュ、デントリー、iノードの3つが実行されます。 1を使用するとページキャッシュのみが解放され、2を使用するとデントリーとiノードが解放されます。

おそらく、次のような奇妙なタイミングの問題が発生しています。

  1. この操作の実行が速すぎます
  2. 以前にコマンドを実行したばかりなので、空にするものは何もありません
  3. 以前のコマンドが完了または処理される機会がありませんでした

参考文献

2
slm

これは、実行しているLinuxディストリビューションに関係なく機能するはずです。 Sudoを実行するときは、リダイレクトをカバーする必要があります。

$ Sudo sh -c "$(which echo) 3 > /proc/sys/vm/drop_caches"

クレジット: https://unix.stackexchange.com/a/148442/101951 (ただし、which echoの部分を追加しました)

1
thebugfinder