web-dev-qa-db-fra.com

"echo 3> / proc / sys / vm / drop_caches" - Autorisation refusée en tant que root

J'ai actuellement quelques problèmes avec le cache. C'est un peu trop en ce moment donc je voulais le clarifier. J'ai googlé et trouvé cette petite commande: sync && echo 3 > /proc/sys/vm/drop_caches.
Je suis connecté en tant que root sur SSH (sans utiliser Sudo). Ce sont les tentatives que j'ai faites:

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

Il s'agit d'une machine distante exécutant Debian. Autant que je sache, il y a des vCores dans cette machine et elle utilise Virtuozzo pour la virtualisation.
Je veux vraiment juste vider le cache (donc je ne peux y accéder qu'en utilisant SSH).
J'ai également essayé de l'enregistrer en tant que cronjob. Mais cela échoue tout simplement aussi!

28
BrainStone

Je suis connecté en tant que root sur SSH ... C'est une machine distante exécutant Debian.

Est-ce en fait une machine distante, ou juste une télécommande système? S'il s'agit d'un VPS tranche quelque part, (au moins certaines formes de) virtualisation du système d'exploitation (par exemple openVZ) ne permettra pas cela à partir du conteneur. Vous ne lancez pas la machine, vous exécutez simplement votre tranche.

28
goldilocks

Sudo doit couvrir toute la redirection pour pouvoir être complètement exécutée par root:

$ Sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"
43
rasty.g

Il s'agit d'un comportement normal sous la virtualisation au niveau du système d'exploitation. Cela ne peut être exécuté que par une personne ayant un accès root au nœud matériel.

Avec par exemple OpenVZ, vous n'avez pas votre propre instance du noyau et en tant que tel, vous n'êtes pas autorisé à exécuter des commandes comme celle-ci.

Tous partagent le même cache de page, donc pour supprimer les caches de votre instance uniquement, le noyau doit vérifier si la page vous appartient et si les autres instances n'utilisent pas également cette page.

Avec une autre technique de virtualisation comme KVM ou Xen cela pourrait fonctionner.

13
chaos

Vous pouvez utiliser echo dirigé vers Sudo tee pour accorder l'autorisation appropriée nécessaire lorsque vous avez besoin de faire écho en tant que root.

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

Utilisation tee --help pour afficher plus d'options.

8
mchid

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

Cette commande fonctionne pour moi sans /usr/bin/echo dans la réponse mchid. Il donnait une erreur sh: 1: /usr/bin/echo: not found. Donc utilisé uniquement "écho"

1
ascii_walker

J'ai eu le même problème lorsque j'ai essayé d'utiliser Sudo comme ceci:

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

Ma solution était de passer temporairement en root. Manifestement, cette autorisation doit être activée sur votre système:

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