Linux

為什麼一個軟體包即使在升級時也能正常執行?

  • May 24, 2013

假設我正在執行一個軟體,然後我執行包管理器來升級軟體,我注意到 Linux 並沒有關閉用於包升級的執行過程——它仍然執行良好。Linux 是如何做到這一點的?

原因是 Unix 在執行時不會鎖定執行檔,或者即使它像 Linux 一樣,這種鎖定也適用於 inode,而不是文件名。這意味著即使在文件已被刪除(實際上未連結)並被具有相同名稱的新文件替換後,保持它打開的程序仍在訪問相同的(舊)數據,這基本上是包更新所做的。

這是 Unix 和 Windows 之間的主要區別之一。後者無法更新被鎖定的文件,因為它在文件名和 inode 之間缺少一層,這使得更新甚至安裝某些軟體包非常麻煩,因為它通常需要完全重啟。

引用自:https://unix.stackexchange.com/questions/74142