2013-08-13 7 views
5

लिनक्स 2.6.27 में:"lsof" एक फ़ाइल के रूप में (हटाया गया) से पता चलता है, लेकिन मैं अभी भी फाइल सिस्टम में देख सकते हैं

से "lsof" उत्पादन मैं एक (हटाया गया) फ़ाइल के साथ खुला fd पकड़े एक प्रक्रिया को देखने के । अजीब बात यह है कि मैं अभी भी "ls" का उपयोग कर फ़ाइल सिस्टम में फ़ाइल देख सकता हूं। ऐसा क्यों है?

धन्यवाद।

उत्तर

5

फ़ाइल तब तक नहीं हटाई जाती है जब तक कि कुछ प्रक्रिया में फ़ाइल खुलती है। जब कोई फ़ाइल बंद होती है, तो कर्नेल पहले उस प्रक्रिया की संख्या की गणना करता है जिसमें फ़ाइल खुलती है। यदि यह गिनती 0 तक पहुंच गई है, तो कर्नेल लिंक गिनती की जांच करता है; यदि यह 0 है, तो फ़ाइल की सामग्री हटा दी जाती है।

आदमी unlink से उद्धृत करने के लिए:

नाम किसी फ़ाइल के लिए पिछले लिंक था, लेकिन ऐसी कोई भी प्रक्रिया अभी भी फ़ाइल फ़ाइल को खोलने के पिछले फ़ाइल वर्णनकर्ता यह जिक्र तक अस्तित्व में रहेगा है बंद हो गया है।

+0

कहता है कि अनलिंक हमेशा नाम हटा देता है, और कभी-कभी फ़ाइल को हटा देता है। यदि आप 'ls' में फ़ाइल देख सकते हैं, तो नाम हटा नहीं दिया गया है। तो यह नहीं चल रहा है कि क्या हो रहा है। आप एक प्रक्रिया में एक फ़ाइल खोलकर इसे फिर से हटा सकते हैं, फिर इसे दूसरे में हटाकर 'एलएस' कर सकते हैं। – philh

5

जब कोई फ़ाइल हटा दी जाती है तो यह फ़ाइल सिस्टम पर नहीं देखी जाएगी। हालांकि, यह एक ही फ़ाइल पर एक ही फ़ाइल नाम के साथ एक और फ़ाइल संभव है।

आप lsof और ls -i में दिखाए गए नोड संख्या को देख सकते हैं कि वे वास्तव में एक ही फ़ाइल हैं या नहीं।

संबंधित मुद्दे

 संबंधित मुद्दे