「echo 3> / proc / sys / vm / drop_caches」-ルートとして許可が拒否されました


26

現在、キャッシュにいくつかの問題があります。今は少し多すぎるので、クリアしたかったです。私はグーグルでこの小さなコマンドを見つけました:sync && echo 3 > /proc/sys/vm/drop_caches
SSH経由でrootとしてログインしています(sudoを使用していません)。これらは私が行った試みです:

root@server: ~ # ll /proc/sys/vm/drop_caches
-rw-r--r-- 1 root root 0 15. Jan 20:21 /proc/sys/vm/drop_caches

root@server: ~ # echo 3 > /proc/sys/vm/drop_caches
-bash: /proc/sys/vm/drop_caches: Permission denied

root@server: ~ # sudo su -c "echo 3 > /proc/sys/vm/drop_caches"
bash: /proc/sys/vm/drop_caches: Permission denied

root@server: ~ # echo 3 | sudo tee /proc/sys/vm/drop_caches
tee: /proc/sys/vm/drop_caches: Permission denied
3

Debianを実行しているリモートマシンです。私の知る限り、このマシンにはいくつかのvCoreがあり、仮想化にVirtuozzoを使用しています。
私は本当にただのキャッシュをクリアしたい(私はSSHを使用してアクセスできるように)
また、これをcronjobとして登録してみました。しかし、それも単純に失敗します!


1
これをルートとして実行していますsudoか、それとも使用していますか?
テルドン

2
これをルートとして実行しています。ただし、sudoも失敗します。
BrainStone 14年

動作しません。すでに試してみました。同じエラーメッセージ。
BrainStone 14年

この質問に関するslmのAを参照してください。
リストサルミネン14年

これはめったにありませんが、/proc/sys/vm/drop_caches実際には存在するのかわかりませんか?
テルドン

回答:


27

SSH経由でrootとしてログインしています...これはDebianを実行しているリモートマシンです。

それは実際にリモートマシンですか、それとも単なるリモートシステムですか?これがどこかのVPS スライスである場合、(少なくともいくつかの形式の)OS仮想化(例:openVZ)は、コンテナー内からこれを許可しません。マシンを実行するのではなく、スライスを実行するだけです。


2
方法はありません ???
BrainStone 14年

1
おそらく機能しない代替方法がある場合、許可しないことはあまり意味がないので、おそらくそうではありません。
ゴルディロックス

2
@BrainStone-私はOpenVZを使用していますが、不可能です!
slm

36

sudo ルートによって完全に実行できるように、リダイレクト全体をカバーする必要があります。

$ sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"

5
これは実際には(エコーのための右のバイナリの場所で)私のために働いた
ORM

OpenVZのない仕事に
shilovk

1
代わりに、あなたの代わりにティーを使用することができますecho 3 | sudo tee /proc/sys/vm/drop_caches
mchid

1
@mchid、コメントを回答として追加することを検討してください。また、Azure VMでも機能しました。
エリックシルツ

これはすでにルートです。行頭の#を参照してください。sudoの問題は注目に値しますが、別の質問があります。
アレクセイ・マルティアノフ

13

これは、OSレベルの仮想化における通常の動作です。これは、ハードウェアノードへのルートアクセス権を持つユーザーのみが実行できます。

たとえばOpenVZを使用すると、独自のカーネルインスタンスを取得できないため、このようなコマンドの実行が制限されます。

すべてが同じページキャッシュを共有するため、インスタンスのみのキャッシュを削除するには、カーネルはページが自分のものであるかどうか、および他のインスタンスもこのページを使用していないかどうかを確認する必要があります。

KVMXenなどの別の仮想化手法では、これが機能している可能性があります。


1
キャッシュをクリアするためにホスティング業者に連絡する必要がありますか?そして、私のシステムがどの「仮想化技術」上にあるのかをどうやって見つけるのですか?
BrainStone 14年

はい、あなたは...この周り来ないかもしれない
混沌

これが正しいかどうかは私にはわかりません。私はawsとXenでいくつかのvmを実行しており、drop_cachesを実行できます。

2
違いは、OSの仮想化(OpenVZ、LXC)とプラットフォームの仮想化(QEMU、Xen)の違いであり、どちらも他に比べて長所と短所があります。
goldilocks 14年

1
@bersch XenはVMに独自のカーネルを使用します。OpenVZはサポートしていません。OpenVZは、より良い「chroot」と考えることができます。
ニルス14年

8

echoパイプを使用しsudo teeて、rootとしてエコーする必要がある場合に必要な適切な許可を許可できます。

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

tee --helpより多くのオプションをリストするために使用します。


0

sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

このコマンド/usr/bin/echoは、mchidの回答がなくても機能します。それはエラーを与えていましたsh: 1: /usr/bin/echo: not found。そのため、「エコー」のみを使用しました


-1

このようなsudoを使用しようとすると、同じ問題が発生しました。

sudo echo 1 > /proc/sys/vm/overcommit_memory

私の解決策は一時的にルートに切り替えることでした。明らかに、その許可はシステムで有効にする必要があります:

sudo su -  #temporarily switch to root user
echo 1 > /proc/sys/vm/overcommit_memory
exit # Exit as root.  

-2

OpenStackでsmilar VM設定を使用すると、これは機能します(Debianの実行):

sync && sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.