如果我讀出存儲在NTFS文件系統中的文件時,我嘗試在仍然讀它移動/重命名文件,我這樣做避免。如果我在UNIX文件系統(如EXT3)上嘗試這種方法,它會成功,並且讀取過程不受影響。我甚至可以讀取文件並且讀取過程不受影響。這個怎麼用?有人可以向我解釋爲什麼在UNIX文件系統下支持這種行爲,但不支持NTFS?我有一個模糊的感覺,它與硬鏈接和inode有關,但我會很感激一個很好的解釋。UNIX命令mv和rm如何與打開的文件一起使用?
11
A
回答
23
Unix文件系統使用引用計數和查找文件的兩層結構。
的文件名是指一種叫做inode,用於信息節點或索引節點。 inode存儲(指向)文件內容以及一些元數據,如文件的類型(普通,目錄,設備等)以及誰擁有它。
多個文件名可以參照相同的inode;他們然後被稱爲hard links。另外,file descriptor(fd)是指inode。 fd是進程在打開文件時獲得的對象的類型。
在Unix文件系統中的文件,只有當最後一個引用消失了消失了,所以當沒有更多的名稱(硬鏈接)或fd的引用它。所以,rm
實際上並沒有刪除文件;它將刪除對文件的引用。
此建立文件系統可能看起來混亂,有時提出的問題(特別是與NFS),但它有一個鎖定不需要很多的應用程序的好處。許多Unix程序也通過打開臨時文件並在之後立即刪除它們來利用這種情況。一旦它們終止,即使它們崩潰,臨時文件也不見了。
4
在unix系統中,文件名是簡單的實際文件(i節點)的鏈接。打開文件還會創建一個到臨時文件的鏈接(臨時)。當一個文件的所有鏈接都已經消失(rm和close())時,文件被刪除。
在NTFS,邏輯文件名是文件。從文件名到文件metainfo沒有間接層,它們是同一個對象。如果您打開它,它正在使用中,無法刪除,就像unix上的實際文件(inode)在使用時無法刪除一樣。
Unix的: 文件名 - >的FileInfo - >文件數據
NTFS: 文件名/ FileInfo的 - >文件數據
相關問題
- 1. 使用mv命令 - 文件被刪除?
- 2. 如何使用UNIX命令和蟒蛇一起
- 3. UNIX tty命令和文件命令?
- 4. 如何將mv反轉爲文件 - Unix
- 5. 使用命令行打開文件
- 6. 使用命令行打開文件
- 7. 查詢與MV Linux命令
- 8. bash腳本mv命令不起作用
- 9. UNIX管理:找到-exec mv命令僅移動一定量的文件
- 10. Unix文件mv錯誤
- 11. Windows命令行打開與命令同名的文件
- 12. Linux rm命令與變量
- 13. 如何使用Windows命令行打開所有的mp3文件?
- 14. 在shell腳本使用mv命令重命名文件部分
- 15. Unix命令不起作用
- 16. unix命令不起作用
- 17. 如何將git log命令與文件名和選項一起使用?
- 18. mv命令行 - 文件消失了?
- 19. 打開文件的I/O和使用命令行重定向
- 20. 如何使用rm命令inlinux從一組目錄中刪除所有文件?
- 21. 使用UNIX中的命令關閉所有打開的X-windows
- 22. 如何從命令行使用Chrome打開文件?
- 23. 如何在php中使用exec命令打開文件?
- 24. 如何使用bat文件打開cmd並執行命令?
- 25. 如何使用OptionParser通過命令行選項打開文件?
- 26. 如何使用指定程序從命令行打開文件?
- 27. 用mv find和awk重命名文件
- 28. 如何使用「打開」VB.net打開多個文件? (命令行參數)
- 29. 如何使用unix命令輸出文件的800-900行?
- 30. 如何檢索在命令行中使用rm -rf在UNIX中刪除的文件?
在那裏,我可以移動打開的文件是否有限制?例如。只在同一個文件系統中? –
@ivan_pozdeev在不同文件系統的文件上執行'mv'實際上會複製數據並刪除原始文件,在這種情況下,它類似於打開文件的'rm'。 – dsonck92