
nautilus
我注意到我實際上可以 Shift-Delete(即不進入垃圾箱)當前正在播放的視頻,並且它仍然繼續播放,即使在或ls
(終端) 中沒有對其進行命名引用。
當播放器播放完影片後,磁碟空間是否正常釋放?
我認為這是正常行為,但這對我來說無疑是一種新體驗(因為這在 Windows 中根本不可能)。
答案1
儘管您已將其刪除,但該檔案仍在使用中,因為您已在播放器中開啟它。一旦關閉媒體播放器,它將釋放其對檔案資料的句柄,因此將被刪除。
您可以使用lsof
列出開啟檔案的命令來驗證這一點。如果您運行 lsof,您的電影檔案應該被列為播放器正在打開,但它旁邊會有“DEL”,這意味著它已被刪除,即使它仍然打開。
這實際上是一件有用的事情,意味著您實際上可以恢復已刪除的開啟文件,儘管這可能最好留給另一個問題:)
它的出現是因為(據我所知)文件由資料本身和文件的句柄(文件系統中的位置)組成。通常,一個檔案只有一個句柄,但您可以使用ln
建立硬連結的命令來建立其他句柄。這將創建看似與文件相同的副本,但實際上只是添加另一個句柄 - 因此您沒有使用兩倍的磁碟空間。您可以透過查看兩個檔案的索引節點來檢查這一點 - 這會告訴您資料的實際位置。
例如在終端機視窗中:
ln existing_movie.avi movie_hardlink.avi
ls -i
ls 的 -i 參數顯示檔案的 inode 資訊 - 它們應該是相同的。
當您刪除其中一個檔案時,資料將會保留,因為另一個檔案仍然保留 inode 的句柄。一旦刪除第二個文件,索引節點就沒有剩餘的句柄/引用,因此被刪除/標記為未使用的空間。這與播放器打開電影時的情況直接類似,只是這裡的第二個句柄位於正在運行的程式中,而不是檔案系統中的第二個檔案。
答案2
讀http://linuxgazette.net/105/pitcher.html,你就會明白為什麼(並了解硬連結和軟連結之間的區別)