題 刪除所有內容:#rm -rf /


只是想知道,當你刪除正在運行的Linux系統上的每個文件時會發生什麼?

# rm -rf /


4
2017-08-23 13:45


起源


試試看:)開個玩笑..是的 - Srin


答案:


你是:視頻 Ubuntu的方式 和 CentOS方式 死亡的 rm / -rf


10
2017-08-23 13:49



Slackware視頻有點令人失望。 - zildjohn01
偉大的視頻。除了Slackware之外。 - xsznix
好的,改為CentOS(在VM中)。抱歉失敗:) - whitequark
Slackware可能只是錯過了一個 --no-preserve-root。 - Daniel Beck♦


我將其翻譯為:如何刪除某人仍在使用的文件?

好吧,在Linux上,部分文件系統位於RAM中,部分位於磁盤上。當進程A打開文件並使其保持打開狀態(比如共享庫)時,進程A將獲取該文件的“inode”的副本。這是一個數據結構,它告訴系統文件在磁盤上的位置。

現在我們有兩個inode,一個在磁盤上,一個在RAM中。如果第二個進程要求同一個文件,我們有三個inode。現在第二個進程刪除了inode。這給我們留下了1個inode:進程A的inode。

這意味著進程A仍然可以看到文件(並讀取它),即使沒有其他人可以(因為磁盤上的inode已被刪除而第二個進程早已消失)。一旦進程A終止,最後剩餘的inode就會被刪除,文件就真的消失了。

Linux通過以下方式利用此功能:

  1. 您可以備份任何文件,甚至是當前正在使用的文件。
  2. 您可以在運行的系統中安裝升級而不會破壞任何東西(嗯......差不多;有一些極端情況,但通常,它可以工作)。
  3. 您可以創建一個文件,刪除它然後再使用它。沒有其他進程(也沒有病毒等)可以查看,讀取或更改該文件。是你的。最重要的是,當您的流程結束時,文件會自動刪除。多麼酷啊?

那會發生什麼?起初,並不多。最終,錯誤將記錄到已刪除的日誌文件中,無法找到某些文件。如果您嘗試運行新命令,它將失敗。停止進程會讓它陷入困境。最終,您將使用無法重新啟動或關閉的掛起系統,因為這些命令不再存在。


18
2017-08-23 13:59



文件和inode的很好的解釋 - invert
所以當inode在RAM中並且系統崩潰時,會發生什麼?是否會使文件無法刪除或RAM-inode處理方式不同? - Tobias Kienzler
很好的解釋......但是我一直在尋找視頻,儘管這可能在將來的某個時候有用 - xsznix
@Tobias:不,這個空間被收回了。發生這種情況要么是因為磁盤上的節點已標記為“要刪除”;然後在操作系統下次看到它時,它將回收空間。或者文件系統檢查將回收它,因為任何人都沒有引用該結構。當創建新文件時,分配新塊,寫入新的“分配塊映射”,然後,最後,更新指向“當前分配塊映射”的指針。只要沒有發生這種情況,空間就只分配在RAM中。注意:50年的開發進入了這個文件系統。非常好。 - Aaron Digulla


您可以自己測試它,只需在虛擬機中安裝Linux即可。不要忘記你需要 sudo 要么 su 它的工作原理。


0
2017-08-23 14:25