Mam obecnie problemy z pamięcią podręczną. To trochę za dużo, więc chciałem to wyjaśnić. Google i znalazłem ten mały komendę: sync && echo 3 > /proc/sys/vm/drop_caches
.
Jestem zalogowany jako root przez SSH (nie używam sudo). Oto próby, które podjąłem:
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
Jest to zdalna maszyna z systemem Debian. O ile wiem, w tej maszynie jest kilka vCores i do wirtualizacji używa Virtuozzo.
Naprawdę chcę po prostu wyczyścić pamięć podręczną (więc mogę uzyskać do niej dostęp tylko za pomocą SSH) .
Próbowałem też zarejestrować to jako koleżankę. Ale to też po prostu zawodzi!
linux
permissions
virtualization
proc
openvz
BrainStone
źródło
źródło
sudo
?/proc/sys/vm/drop_caches
naprawdę istnieje?Odpowiedzi:
Czy to rzeczywiście zdalna maszyna, czy tylko zdalny system ? Jeśli jest to gdzieś wycinek VPS , (przynajmniej niektóre formy) wirtualizacji systemu operacyjnego (np. OpenVZ) nie pozwoli na to z poziomu kontenera. Nie uruchamiasz maszyny, po prostu uruchamiasz swój kawałek.
źródło
sudo
musi obejmować całe przekierowanie, aby można je było całkowicie wykonać przez root:źródło
echo 3 | sudo tee /proc/sys/vm/drop_caches
Jest to normalne zachowanie w przypadku wirtualizacji na poziomie systemu operacyjnego. Może to wykonać tylko osoba z dostępem root do węzła sprzętowego.
Na przykład w OpenVZ nie dostajesz własnej instancji jądra i jako takie nie masz możliwości wykonywania takich poleceń.
Wszystkie współużytkują tę samą pamięć podręczną strony, więc aby upuścić pamięć podręczną tylko Twojej instancji, jądro musi sprawdzić, czy strona należy do Ciebie i czy inne instancje również nie korzystają z tej strony.
W przypadku innej techniki wirtualizacji, takiej jak KVM lub Xen, może to działać.
źródło
Możesz użyć
echo
potokowania, abysudo tee
zezwolić na odpowiednie pozwolenie potrzebne, gdy potrzebujesz echa jako root.Użyj,
tee --help
aby wyświetlić więcej opcji.źródło
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
To polecenie działa dla mnie bez
/usr/bin/echo
odpowiedzi w mchid. To dawało błądsh: 1: /usr/bin/echo: not found
. Tak używany tylko „echo”źródło
Miałem ten sam problem, gdy próbowałem użyć sudo w ten sposób:
Moim rozwiązaniem było tymczasowe przejście do rootowania. Oczywiście, to uprawnienie musi być włączone w twoim systemie:
źródło
Używanie podobnych ustawień VM z OpenStack i to działa (działa Debian):
źródło