"गूंज 3> / proc / sys / vm / drop_caches" - रूट के रूप में अनुमति से इनकार किया गया


26

मैं वर्तमान में कैश के साथ कुछ समस्याएँ हूँ। यह अभी बहुत कम है इसलिए मैं इसे साफ करना चाहता था। मैंने गुगली की और यह छोटी सी आज्ञा मिली sync && echo 3 > /proc/sys/vm/drop_caches:।
मैं SSH (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

यह एक दूरस्थ मशीन है जो डेबियन चल रही है। जहां तक ​​मुझे पता है कि इस मशीन में कुछ vCores हैं और यह वर्चुअलाइजेशन के लिए Virtuozzo का उपयोग करता है।
मैं वास्तव में केवल कैश को साफ करना चाहता हूं (इसलिए मैं केवल एसएसएच का उपयोग करके इसे एक्सेस कर सकता हूं)
मैंने इसे क्रोनजोब के रूप में पंजीकृत करने का भी प्रयास किया। लेकिन यह बस भी विफल रहता है!


1
क्या आप इसे रूट के रूप में चला रहे हैं या आप उपयोग कर रहे हैं sudo?
terdon

2
मैं इसे जड़ के रूप में चला रहा हूं। लेकिन सूद भी फेल है।
ब्रेनस्टोन

काम भी नहीं करता है। पहले ही कोशिश कर चुका था। एक ही त्रुटि संदेश।
ब्रेनस्टोन

इस प्रश्न पर स्लम के ए को देखें , यह मदद कर सकता है।
रिस्तो सलमिनन

यह बेहद संभावना नहीं है, लेकिन आप कभी नहीं जानते, क्या /proc/sys/vm/drop_cachesवास्तव में मौजूद है?
terdon

जवाबों:


27

मैं SSH पर रूट के रूप में लॉग इन हूं ... यह एक दूरस्थ मशीन है जो डेबियन चल रही है।

क्या यह वास्तव में एक रिमोट मशीन है, या सिर्फ एक रिमोट सिस्टम है ? अगर यह कहीं VPS स्लाइस है, तो (कम से कम कुछ रूपों में) OS वर्चुअलाइजेशन (जैसे कि ओपनवीजेड) कंटेनर के भीतर से इसकी अनुमति नहीं देगा। आप मशीन नहीं चलाते हैं, आप सिर्फ अपना टुकड़ा चलाते हैं।


2
की तरह नहीं है कोई रास्ता नहीं ???
ब्रेनस्टोन

1
शायद नहीं, क्योंकि वैकल्पिक तरीकों से काम करने पर इसे अनुमति नहीं देने के लिए बहुत कुछ नहीं होगा।
गोल्डीलॉक्स

2
@BrainStone - मैं OpenVZ का उपयोग करता हूं, यह संभव नहीं है!
SLM

36

sudo पूरे पुनर्निर्देशन को कवर करना है ताकि इसे पूरी तरह से जड़ से निष्पादित किया जा सके:

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

5
यह वास्तव में मेरे लिए काम किया (गूंज के लिए सही द्विआधारी स्थान के साथ)
ORM

में OpenVZ काम नहीं
16

1
वैकल्पिक रूप से, आप इसके बजाय टी का उपयोग कर सकते हैं:echo 3 | sudo tee /proc/sys/vm/drop_caches
mchid

1
@ एमकिड, अपनी टिप्पणी को उत्तर के रूप में जोड़ने पर विचार करें। इसने मेरे लिए Azure VM पर भी काम किया।
एरिक शिलट्स

यह पहले से ही रूट है, लाइन की शुरुआत में # देखें। सुडो के साथ मुद्दा ध्यान देने योग्य है, लेकिन एक और सवाल के लिए।
अलेक्सई मार्टिनियनोव

13

यह ओएस-स्तर वर्चुअलाइजेशन के तहत सामान्य व्यवहार है। यह केवल हार्डवेयर नोड के रूट एक्सेस वाले किसी व्यक्ति द्वारा निष्पादित किया जा सकता है।

उदाहरण के लिए OpenVZ के साथ , आपको अपना कर्नेल उदाहरण नहीं मिलता है और जैसे, इस तरह के कमांड को निष्पादित करने से प्रतिबंधित किया जाता है।

सभी एक ही पेज कैश साझा करते हैं, इसलिए केवल आपके उदाहरण के कैश को छोड़ने के लिए, कर्नेल को यह जांचना चाहिए कि क्या पेज आपके पास है और यदि अन्य इंस्टेंसेस इस पेज का उपयोग नहीं कर रहे हैं।

KVM या Xen जैसी एक और वर्चुअलाइजेशन तकनीक के साथ यह काम कर सकता है।


1
इसलिए मैं अपने होस्टर से संपर्क कर सकता / सकती हूं ताकि मेरे लिए कैश को खाली कर सके? और मुझे कैसे पता चलेगा कि "वर्चुअलाइजेशन तकनीक" मेरा सिस्टम क्या है?
ब्रेनस्टोन

हाँ, आप इसके आस-पास नहीं आ सकते हैं ...
अराजकता

अगर यह सही है तो मैं श्योर नहीं हूं। मैं कुछ vm aws और Xen पर चला रहा हूँ और मैं drop_caches में सक्षम हूँ।

2
अंतर ओएस वर्चुअलाइजेशन (ओपनवीजेड, एलएक्ससी) और प्लेटफॉर्म वर्चुअलाइजेशन (क्यूईएमयू, एक्सईएन) के बीच है, जिनमें से दोनों के फायदे और अन्य बनाम बनाम भिन्नताएं हैं।
गोल्डीलॉक्स

1
@ वर्ड एक्सपीएन वीएम के लिए स्वयं कर्नेल का उपयोग करता है। OpenVZ नहीं करता है। आप OpenVZ को एक बेहतर "चिरोट" की तरह सोच सकते हैं।
निल्स

8

जब आप को रूट के रूप में प्रतिध्वनित करने की आवश्यकता हो, तो उचित अनुमति देने के echoलिए आप पाइप्ड का उपयोग कर सकते हैं sudo tee

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

tee --helpअधिक विकल्पों को सूचीबद्ध करने के लिए उपयोग करें।


1

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

यह कमांड मेरे लिए बिना /usr/bin/echomchid उत्तर के काम करता है। यह त्रुटि दे रहा था sh: 1: /usr/bin/echo: not found। इसलिए केवल 'इको' का इस्तेमाल किया


-1

मुझे भी इसी तरह की समस्या थी जब मैंने इस तरह से सुडोल प्रयोग करने की कोशिश की:

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

ओपनस्टैक के साथ एक स्माइल वीएम सेटिंग्स का उपयोग करना और यह काम करता है (डेबियन चलाना):

sync && sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.