เมื่อไฟล์ถูกย้ายและไฟล์ปลายทางมีอยู่แล้วและกำลังอ่านอยู่การดำเนินการจะสำเร็จหรือไม่ มันจะขึ้นอยู่กับระยะเวลาที่การอ่านไฟล์ปลายทางนานเท่าไร?
เมื่อไฟล์ถูกย้ายและไฟล์ปลายทางมีอยู่แล้วและกำลังอ่านอยู่การดำเนินการจะสำเร็จหรือไม่ มันจะขึ้นอยู่กับระยะเวลาที่การอ่านไฟล์ปลายทางนานเท่าไร?
คำตอบ:
การดำเนินการอ่านจะสำเร็จไม่ว่าจะใช้เวลานานเท่าใดในการดำเนินการอ่าน
ทำไมและทำงานอย่างไร
เมื่อการดำเนินการอ่านเริ่มขึ้นInodeของไฟล์จะถูกใช้เป็นจุดจับซึ่งมีการอ่านเนื้อหาของไฟล์
เมื่อย้ายไฟล์อื่นไปยังไฟล์เป้าหมายผลลัพธ์จะเป็นไอโหนดใหม่ซึ่งหมายความว่าเนื้อหาทางกายภาพของไฟล์บนดิสก์จะถูกวางไว้ที่อื่นและเนื้อหาต้นฉบับของไฟล์ที่กำลังอ่านจะไม่ถูกสัมผัส
สิ่งเดียวที่พวกเขามีเหมือนกันคือเส้นทาง / ชื่อไฟล์ของพวกเขาในขณะที่ inode และตำแหน่ง phyiscal บนดิสก์เปลี่ยนแปลง
เมื่อการดำเนินการอ่านเสร็จสิ้น (ไม่มีกระบวนการอื่นใดที่ยังคงมีตัวจัดการไฟล์ที่เปิดอยู่บนไฟล์เก่าและไม่มีฮาร์ดลิงก์อื่น ๆ ที่อ้างถึง inode ของมัน) ข้อมูลเก่าจะถูกยกเลิก
เมื่อการดำเนินการย้ายเสร็จสมบูรณ์ไฟล์จะมีหมายเลขดัชนีไอโหนดใหม่
ท่านสามารถแสดงไฟล์ inode ls -i /tmp/some-file
หมายเลขดัชนีการใช้
ด้วยเหตุผลเดียวกับที่อธิบายไว้ข้างต้นมันเป็นไปได้ที่จะลบไฟล์ที่แอปพลิเคชันยังคงใช้งานอยู่เนื่องจากแอปพลิเคชันที่ใช้ไฟล์จะอ่านจากไอโหนด (ชี้ไปที่เนื้อหาไฟล์จริงบนดิสก์) ในขณะที่การอ้างอิงไฟล์ ในระบบไฟล์จะถูกลบ