dd: '/ dev / null' लिखना: डिवाइस पर कोई स्थान नहीं बचा है


9

मैं / देव / अशक्त में एक 550MB फ़ाइल पढ़ रहा हूँ और मुझे मिल रहा है

dd: writing '/dev/null': No space left on device

मैं हैरान था। मैंने सोचा / देव / अशक्त एक ब्लैक होल है जहाँ आप जितना चाहें भेज सकते हैं (क्योंकि इसकी आभासी एफएस है)।

हां, यह त्रुटि मिलने पर मेरी डिस्क लगभग भर चुकी है। मैं डिस्क से सामग्री हटाने के अलावा और क्या कर सकता हूं?

 ls -l /dev/null
 -rw-r--r--    1 root     root             0 July 7 21:58 /dev/null

के बजाय

 crw-rw-rw-    1 root     root        1,   3 July 7 02:58 /dev/null

कमांड मैं उपयोग कर रहा हूं:

time sh -c "dd if=$filename of=/dev/null"

3
आप के उत्पादन में प्रदान कर सकते हैंls -l /dev/null
पैट्रिक

@ पैट्रिक ने ls -l
अंकुर अग्रवाल

1
क्या आप अपने द्वारा निष्पादित किए जा रहे dd कमांड को कॉपी / पेस्ट भी कर सकते हैं?
फरवरी को

2
यह वाकई अजीब है। लेखन को /dev/nullइस त्रुटि को कभी भी ट्रिगर नहीं करना चाहिए, क्योंकि यह वास्तव में कहीं भी कुछ भी नहीं लिखता है। क्या आप के बिना एक ही प्रभाव मिलता है time? कृपया strace dd if=$filename of=/dev/null( बिना किसी गोपनीय जानकारी वाली फ़ाइल के साथ ) का आउटपुट पोस्ट करें , या strace dd if=$filename of=/dev/nullयदि timeत्रुटि को ट्रिगर करने के लिए आवश्यक है।
गिल्स एसओ- बुराई को रोकना '

1
@ गिल्स समस्या यह थी कि मेरा / dev / null एक चरित्र विशेष फ़ाइल नहीं थी। मैंने ऊपर अपना प्रश्न अपडेट किया।
अंकुर अग्रवाल

जवाबों:


17

/dev/nullएक विशेष फ़ाइल है, टाइप कैरेक्टर डिवाइस की। उस चरित्र डिवाइस के लिए ड्राइवर जो कुछ भी आप डिवाइस पर लिखने की कोशिश करता है उसे अनदेखा करता है और लिखता है कि हमेशा सफल होता है। यदि कोई लिखने में /dev/nullविफल रहता है, तो इसका मतलब है कि आप किसी तरह उचित को हटाने /dev/nullऔर इसे एक नियमित फ़ाइल द्वारा बदलने में कामयाब रहे हैं । आपने गलती से निकाल दिया होगा /dev/null; तब अगले … >/dev/nullने इसे एक नियमित फ़ाइल के रूप में फिर से बनाया होगा।

दौड़ें ls -l /dev/nullऔर जांचें कि रेखा कुछ ऐसी दिखती है

crw-rw-rw- 1 root root 1, 3 Sep 13  2011 /dev/null

इसके साथ शुरू होना चाहिए crw-rw-rw-: cएक चरित्र डिवाइस के लिए, और अनुमतियाँ जो सभी को पढ़ने और लिखने की अनुमति देती हैं। फ़ाइल को रूट के स्वामित्व में होना चाहिए, हालांकि यह बहुत महत्वपूर्ण नहीं है। मालिक और समूह के बाद दो नंबर डिवाइस ( प्रमुख और मामूली डिवाइस नंबर ) की पहचान करते हैं । ऊपर मैं लिनक्स के तहत मान दिखाता हूं; अलग-अलग यूनिक्स वेरिएंट के अलग-अलग मूल्य हैं। आमतौर पर तारीख या तो वह तारीख होती है जब सिस्टम स्थापित किया गया था या अंतिम रिबूट की तारीख और कोई फर्क नहीं पड़ता।

यदि आपको फ़ाइल को फिर से बनाने की आवश्यकता है, तो कुछ सिस्टम एक MAKEDEVकमोड प्रदान करते हैं , या तो रूट के PATH में या अंदर /devcd /dev; ./MAKEDEV stdमानक बुनियादी उपकरणों को फिर से बनाने के लिए इसे चलाएं या ऐसा कुछ करें /dev/null। या डिवाइस को मैन्युअल रूप से बनाएं, सही डिवाइस नंबर की आपूर्ति; लिनक्स पर, वह

mknod -m 666 /dev/null c 1 3

1
वाह! आप एक जीवन रक्षक हैं। धन्यवाद, यह वास्तव में मदद करता है। मैंने कभी भी अशक्त नहीं किया, लेकिन यह नहीं था, मैंने स्वयं एक बनाया।
Fr0zenFyr

1
@ Fr0zenFyr आपके पास संभवत: एक स्क्रिप्ट है जो रूट के रूप में चल रही है /dev/nullजो कुछ परिस्थितियों को दूर करती है, शायद कुछ इस तरह हैtmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"
गाइल्स का SO- बुराई करना बंद करें '

मुझे अपनी स्क्रिप्ट की जांच करनी होगी, अगर यह सच है, तो एक मौका है कि अशक्त फिर से हटा दिया जाएगा। मैं वापस आऊंगा अगर मैं इस स्थिति का पता लगाने (हल) में असमर्थ हूं। सर उठाने के लिए धन्यवाद। चीयर्स !! :)
Fr0zenFyr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.