जब कोई फ़ाइल ले जाया जाता है और गंतव्य फ़ाइल पहले से मौजूद है और वर्तमान में पढ़ी जा रही है, तो क्या ऑपरेशन सफल होगा? क्या यह इस बात पर निर्भर करेगा कि गंतव्य फ़ाइल पर रीडिंग ऑपरेशन कितने समय तक रहता है?
जब कोई फ़ाइल ले जाया जाता है और गंतव्य फ़ाइल पहले से मौजूद है और वर्तमान में पढ़ी जा रही है, तो क्या ऑपरेशन सफल होगा? क्या यह इस बात पर निर्भर करेगा कि गंतव्य फ़ाइल पर रीडिंग ऑपरेशन कितने समय तक रहता है?
जवाबों:
रीडिंग ऑपरेशन सफल होगा, भले ही रीडिंग ऑपरेशन को पूरा करने में लगने वाले समय से।
यह क्यों और कैसे काम करता है?
जब रीडिंग ऑपरेशन शुरू होता है, तो फ़ाइल का इनकोड एक हैंडल के रूप में उपयोग किया जाता है जिससे फ़ाइल की सामग्री पढ़ी जाती है।
दूसरी फ़ाइल को लक्ष्य फ़ाइल में ले जाने पर, परिणाम एक नया इनकोड होगा, जिसका अर्थ है कि डिस्क पर फ़ाइल की भौतिक सामग्री को कहीं और रखा जाएगा और जिस फ़ाइल को पढ़ा जा रहा है उसकी मूल सामग्री को नहीं छुआ जाएगा।
केवल एक चीज जो उनके पास है, वह है उनका पथ / फ़ाइल नाम, जबकि डिस्क पर अंतर्निहित इनकोड और फ़ायस्कल स्थान बदलता है।
एक बार रीडिंग ऑपरेशन खत्म हो जाने के बाद (किसी अन्य प्रक्रिया को देखते हुए अभी भी पुरानी फाइल पर एक ओपन फाइल हैंडल नहीं है और इसके इनोड को संदर्भित करने वाले अन्य हार्डलिंक नहीं हैं), पुराना डेटा खारिज कर दिया जाएगा।
मूविंग ऑपरेशन पूरा होने के बाद, फ़ाइल में एक नया इनकोड इंडेक्स नंबर होगा।
आप फ़ाइलों का उपयोग करके इनकोड इंडेक्स संख्या प्रदर्शित कर सकते हैं ls -i /tmp/some-file
।
ऊपर वर्णित उसी कारण के लिए, उन फ़ाइलों को हटाना संभव है जो अभी भी एक एप्लिकेशन द्वारा उपयोग में हैं, क्योंकि फाइल का उपयोग करने वाले एप्लिकेशन सिर्फ इनोड से पढ़ेंगे (डिस्क पर वास्तविक फ़ाइल सामग्री की ओर इशारा करते हुए), जबकि फाइल का संदर्भ फाइलसिस्टम में हटा दिया गया है।