कैसे हटाएं .fuse_hidden * फाइलें?


34

मेरे पास छोटा लिनक्स सर्वर (डेबियन स्क्वीज़) है जो एक सांबा सर्वर चलाता है जिसे कुछ विंडोज़ मशीनों के साथ कुछ फ़ोल्डर साझा करने के लिए कॉन्फ़िगर किया गया है। विंडोज़ से निर्देशिकाओं में से एक को हटाने की कोशिश करते हुए मुझे "फ़ोल्डर को हटा नहीं सकता" त्रुटि मिली।

मैंने निर्देशिका को लिनक्स के कंसोल से हटाने की कोशिश की, मुझे एक समान त्रुटि मिली:

# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty

मैंने निर्देशिका की सामग्री को सूचीबद्ध किया और एक फ़ाइल देखी जिसका नाम है .fuse_hidden जिसके बाद एक हेक्स संख्या (000bd8c100000185) है।

# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000185

मैंने .fuse_hidden फ़ाइल को हटाने की कोशिश की, लेकिन एक नई फ़ाइल तुरंत बनाई गई (हेक्स संख्या परिवर्तन पर ध्यान दें)।

# rm dir-name/.fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000186

मैंने बिना किसी सफलता के फ़ाइल को हटाने के लिए मिडनाइट कमांडर का उपयोग करने का भी प्रयास किया।

अन्य समाधान जो मैंने अब तक जीयूआई में शामिल किए हैं और मुझे केवल कंसोल मिला है।

किसी भी सुझाव की सराहना की है।


3
फ्यूज डेमॉन सक्रिय होने लगता है। फ़ाइल को हटाने से पहले इसे रोकें।
ott--

मैंने इस बीच अपनी टिप्पणी बदल दी है।
ott--

यह मेरा पहला विचार था, लेकिन मुझे रोकने के लिए फ्यूज सेवा नहीं मिली, मैंने सांबा को फिर से चालू किया, समस्या हल हो गई, फ़ाइल चली गई। धन्यवाद।
लैंडो

जवाबों:


52

यह तब होता है जब आप किसी फ़ाइल को हटाते हैं जो किसी अन्य सिस्टम ने NFS माउंट पर खोला है। समस्या यह है कि फाइल को फाइल सिस्टम से हटा दिया गया है, जबकि इसकी "लिंक गणना"> 1 थी, जिसका अर्थ है कि अन्य प्रक्रियाएं अभी भी इसे खुला रखे हुए हैं।

  • उस सिस्टम में लॉग इन करें जहां फ़ाइल भौतिक रूप से रहती है। (कोई नेटवर्क माउंट नहीं)
  • निष्पादित lsof dir-name/.fuse_hidden000bd8c100000185पता लगाने के लिए क्या प्रक्रियाओं फ़ाइल हैंडल खुला पकड़े हुए हैं।
  • उन प्रक्रियाओं को समाप्त करें यदि यह समझ में आता है, या यह पता लगाने के लिए कि आप "इनायत" के लिए क्या कदम उठा सकते हैं, प्रक्रिया को समाप्त किए बिना खुले फ़ाइल हैंडल को छोड़ दें।

आम तौर पर, जब आप अपने स्थानीय फाइल सिस्टम पर एक फ़ाइल को हटाते हैं, जिसकी एक और प्रक्रिया खुली होती है, तो OS आपके अनुरोध का अनुपालन करता है और इसे डायरेक्ट्री ट्री से हटा देता है, लेकिन इनकोड को ट्री पॉइंट को ऑपरेटिंग सिस्टम द्वारा उपयोग में माना जाता है। जब भी कोई फ़ाइल खोली जाती है, तो उसके "लिंक काउंट" में एक के बाद एक बढ़ोतरी होती है, और स्पेस तभी सही मायने में जारी होता है जब वह लिंक काउंट शून्य पर हिट होता है।

जब आप इस प्रकृति की समस्या में भाग लेते हैं, तो इसका मतलब है कि ओएस के पास जो भी कारण है, उस फाइल को डायरेक्टरी ट्री से नहीं हटाने का फैसला किया है : आमतौर पर क्योंकि यह विश्वास करने का कारण है कि इसे अभी भी उन चीजों द्वारा एक्सेस करने की आवश्यकता है जो नहीं कर सकते प्रत्यक्ष इनोड संख्या का उपयोग करें। यह शुरू में अनुपालन करने के लिए लग सकता है, लेकिन पर्दे के पीछे ओएस ने एक छिपे हुए डॉट-उपसर्ग का नाम बदल दिया ताकि वह अभी भी किसी प्रकार के फ़ाइल सिस्टम पथ पते के साथ सुलभ हो। लिंक काउंट के शून्य होने पर स्पेस फिर भी मुक्त हो जाएगा, लेकिन लिंक के चले जाने तक वह ऑब्जेक्ट डायरेक्टरी में रहेगा।


मैंने अनुमान लगाया कि इसे अभी भी फ़ाइल (इस मामले में सांबा) का उपयोग करके कुछ सेवा के साथ करना था, मैं lsof के बारे में भूल गया था।
लैंडो

मुझे समस्या की ओर ले जाएं। lsofमुझे यह पहचानने में मदद मिली कि कौन सी प्रक्रिया अभी भी फ़ाइल पढ़ रही थी और मैं तब तक सब कुछ हटाने में सक्षम था!
धन्यवादForAllTheFish

मेरे पास समस्या है, कि lsofऔर fuserउस फ़ाइल के लिए कोई प्रक्रिया नहीं लाएँ, कोई सुझाव?
mxmlnkn

0

सुझावों के लिए धन्यवाद, लेकिन मेरे लिए कुछ भी काम नहीं किया। लेकिन मुझे एक समाधान मिला: मैंने बाहरी एसएसडी को एक पीसी पर चलने वाली खिड़कियों में स्थानांतरित कर दिया। फ़ाइल एक्सप्लोरर ("छिपे हुए आइटम" चेक किए गए) का उपयोग करके मैंने .Trashesनिर्देशिका को नेविगेट किया, जो .fuser_hiddenफ़ाइल को हटाने में सक्षम थी ।

उम्मीद है की यह मदद करेगा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.