“Echo 3> / proc / sys / vm / drop_caches” - İzin root olarak reddedildi


26

Şu anda önbellekle ilgili bazı sorunlar yaşıyorum. Şu an biraz fazla, bu yüzden temizlemek istedim. Ben googled ve bu küçük komutu bulundu: sync && echo 3 > /proc/sys/vm/drop_caches.
SSH üzerinden root olarak giriş yaptım (sudo kullanmıyor). Bunlar benim yaptığım girişimler:

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 çalıştıran uzak bir makine. Bildiğim kadarıyla bu makinede bazı vCores var ve sanallaştırma için Virtuozzo kullanıyor.
Gerçekten sadece önbelleği temizlemek istiyorum (Böylece yalnızca SSH kullanarak erişebiliyorum) .
Ayrıca bunu cronjob olarak kaydetmeyi de denedim. Ama bu da başarısız oluyor!


1
Bunu root olarak mı kullanıyorsun yoksa kullanıyor sudomusun?
terdon

2
Bunu root olarak çalıştırıyorum. Ancak sudo da başarısız oluyor.
BrainStone

Ya da çalışmıyor. Zaten denedim. Aynı hata mesajı.
BrainStone

Slm en bu soruya bakın , yardımcı olabilir.
Risto Salminen

Bu son derece düşük bir ihtimal, fakat asla bilmiyorsunuz, /proc/sys/vm/drop_cachesgerçekten var mı?
terdon

Yanıtlar:


27

SSH üzerinden root olarak giriş yaptım ... Debian çalıştıran uzak bir makine.

Aslında uzak bir makine mi yoksa sadece uzak bir sistem mi? Bu bir yerde bir VPS dilimi ise , (en azından bazı biçimlerde) OS sanallaştırması (örneğin, openVZ) kabın içinden buna izin vermez. Makineyi çalıştırmıyorsunuz, sadece diliminizi çalıştırıyorsunuz.


2
Gibi Orada hiçbir şekilde ???
BrainStone

1
Muhtemelen hayır, çünkü işe yarayan alternatif yöntemler olsaydı izin vermemek için fazla bir şey olmayacaktı.
goldilocks

2
@BrainStone - OpenVZ kullanıyorum, mümkün değil!
slm

36

sudo yeniden yönlendirmenin tamamını kapsamalıdır, böylece tamamen root tarafından çalıştırılabilir:

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

5
Bu aslında benim için çalıştı (yankı için doğru ikili konuma sahip)
orm


1
alternatif olarak, yerine tee kullanabilirsiniz:echo 3 | sudo tee /proc/sys/vm/drop_caches
mchid

1
@mchid, yorumunuzu bir cevap olarak eklemeyi düşünün. Ayrıca Azure VM'de benim için çalıştı.
Erik,

Kök zaten, satırın başındaki # işaretine bakın. Sudo ile ilgili sorun, başka bir soru için dikkat çekicidir.
Alexei Martianov

13

Bu işletim sistemi düzeyinde sanallaştırma altında normal davranıştır. Bu, yalnızca donanım düğümüne kök erişimi olan biri tarafından yürütülebilir.

Örneğin OpenVZ ile kendi çekirdek örneğinizi elde edemezsiniz ve böyle komutları yerine getirmeniz engellenir .

Hepsi aynı sayfa önbelleğini paylaşır, bu nedenle yalnızca örneğinizin önbelleklerini bırakmak için, çekirdeğin sayfanın size ait olup olmadığını ve diğer örneklerin de bu sayfayı kullanıp kullanmadığını kontrol etmesi gerekir .

KVM veya Xen gibi başka bir sanallaştırma tekniği ile bu çalışıyor olabilir.


1
Yani benim için önbelleği temizlemek için hoster'ımla iletişim kurabilir miyim / gerekir mi? Ve sistemimin hangi "sanallaştırma tekniği" olduğunu nasıl öğrenebilirim?
BrainStone

Evet, bununla karşılaşmayabilirsin ...
kaos

Bunun doğru olup olmadığından emin değilim. Bazı vm'leri aws ve Xen'de çalıştırıyorum ve önbellekleri bırakabiliyorum.

2
Aradaki fark, işletim sistemi sanallaştırması (OpenVZ, LXC) ve platform sanallaştırması (QEMU, Xen) arasındadır; ikisi de diğerlerine göre avantaj ve dezavantajlara sahiptir.
goldilocks

1
@bersch Xen, VM'ler için kendi çekirdeğini kullanır. OpenVZ yapmaz. OpenVZ'yi daha iyi bir "chroot" gibi düşünebilirsiniz.
Nils

8

Kök olarak yankılanmanız gerektiğinde gereken izinlere izin vermek için echopiped kullanabilirsiniz sudo tee.

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

tee --helpDaha fazla seçenek listelemek için kullanın .


1

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

Bu komut benim için /usr/bin/echoorkide cevabı olmadan işe yarıyor. Hata veriyordu sh: 1: /usr/bin/echo: not found. Yani sadece 'echo' kullandı


-1

Bu şekilde sudo kullanmaya çalıştığımda da aynı problem vardı:

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

Benim çözümüm geçici olarak kök olmaktı. Şüphesiz, bu iznin sisteminizde etkinleştirilmesi gerekir:

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

-2

OpenStack ile smilar VM ayarları kullanmak ve bu işler (Debian kullanıyor)

sync && sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.