![Linux核心中如何透過inode刪除文件](https://rvso.com/image/782589/Linux%E6%A0%B8%E5%BF%83%E4%B8%AD%E5%A6%82%E4%BD%95%E9%80%8F%E9%81%8Einode%E5%88%AA%E9%99%A4%E6%96%87%E4%BB%B6.png)
我在linux核心中取得了一個檔案的inode,我想透過inode刪除該檔案。
我需要取消連結 inode 的每個 dentry 嗎?或者我需要取消任何目錄項目的連結嗎?
我該使用哪種鎖來保護什麼?
答案1
可移植檔案刪除呼叫、unlink()、remove() 和更高層級的包裝器幾乎都採用路徑名稱。索引節點主要是實作細節。
若要在 shell 中執行此操作,請使用 GNU 等工具尋找。
find /tmp -type f -inum $INODE
替換/tmp
為要搜尋的路徑$INODE
和數字。-delete
如果您希望結果取消鏈接,請添加。可能會找到同一 inode 的多個名稱。
由於此方法會遍歷所有文件,效率不高。
答案2
在 Linux 中,您無法刪除檔案。
你什麼能要做的就是刪除所有對它的引用,然後檔案系統將自動刪除空間並將該 inode 標記為未使用。
但請注意,正在運行的進程可以引用檔案。即使文件系統中沒有任何內容指向該文件,該文件仍然存在。在進程完成或關閉檔案之前,它仍然存在。