現在、キャッシュに問題があります。今はちょっと多すぎてクリアしたかったです。私はググってこの小さなコマンドを見つけました: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として登録してみました。しかし、それも単に失敗します!
SSH経由でrootとしてログインしています... Debianを実行しているリモートマシンです。
それは実際にはリモートマシンですか、それとも単なるリモートsystemですか?これがVPSである場合スライスどこかで、(少なくともいくつかの形式の)OS仮想化(たとえば、openVZ)はこれをコンテナー内から許可しません。マシンを実行するのではなく、スライスを実行するだけです。
Sudo
はリダイレクト全体をカバーする必要があるため、rootで完全に実行できます。
$ Sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"
これは、OSレベルの仮想化での通常の動作です。これは、ハードウェアノードへのrootアクセス権を持つユーザーのみが実行できます。
たとえばOpenVZを使用すると、独自のカーネルインスタンスを取得できないため、このようなコマンドの実行が制限されます。
すべてが同じページキャッシュを共有するため、インスタンスのみのキャッシュを削除するには、ページが自分のものかどうかをカーネルが確認する必要がありますand他のインスタンスもこのページを使用していないかどうか。
[〜#〜] kvm [〜#〜]またはXenのような別の仮想化手法では、これが機能している可能性があります。
echo
をSudo tee
にパイプして使用すると、rootとしてエコーする必要がある場合に必要な適切な権限を許可できます。
echo 3 | Sudo tee /proc/sys/vm/drop_caches
その他のオプションを一覧表示するには、tee --help
を使用します。
Sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
このコマンドは、mchid回答に/usr/bin/echo
がなくても機能します。エラーsh: 1: /usr/bin/echo: not found
が発生していました。したがって、「エコー」のみを使用
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.