linux下建立檔案過多,導致inode用光
前段時間在下發彩信的時候,只能收到title,查詢發現是臨時存彩信檔案的目錄太多檔案了(當然,一個號碼存一個彩信包估計也有問題),導致程式寫不進目錄,也讀取不到彩信內容。
今天研究了一下,並且重現當時的情景。
按我理解,首先linux建立檔案上限和兩方面因素有關。1是磁碟容量,2就是索引節點inode了。
linux下用df命令檢視磁碟空間和inode佔用情況,網上一大堆。我比較喜歡用的是df -h 檢視容量,df -ihT 檢視inode和檔案系統型別。
那麼什麼是inode呢?
簡單的就是儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。可以用stat +檔名來檢視
linux下inode和檔名是分離的,所以cp或者mv檔案,只改變了檔名,但是他的inode不會變。有時候,檔名包含特殊字元,沒辦法用rm刪除(用轉義符號也沒用),這時候可以直接刪除inode節點
比如:我們在windows上傳了一個帶有特殊符號的檔案,比如
首先用ls -il命令檢視其inode,
然後使用命令find ./ -inum 36175886 -exec rm -i {} \;(使用find命令在當前目錄下查詢inode是36175886 的檔案,將其作為引數傳給rm命令,引數位置在{}裡,以\;表示結束)。
當然,有時候還可以用雙引號將要刪除的檔名括起來。
好了,回到建立檔案過多的情況。這時候,建立檔案也出錯No space left on device,用vim開啟檔案也出錯E138: Can't write viminfo file,只能刪除了。