當你的 Linux 系統沒法建立新文件時,有多是你的磁盤滿了,還有多是你的磁盤的 inode 用光了,咱們今天要說的就是後一種狀況,要解決這個問題,只能是刪除一些文件,可是通常狀況下,實際上是你的系統中的某個地方產生了大量的你並不須要的文件,你要作的就是找到他們並刪除就能夠了,我並非讓你刪除你有用的文件,由於你通常不會有那麼多有用的文件來把系統的 inode 用光。
什麼是 inode ?
文件儲存在硬盤上,硬盤的最小存儲單位叫作」扇區」(Sector)。每一個扇區儲存512字節(至關於0.5KB)。
操做系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率過低,而是一次性連續讀取多個扇區,即一次性讀取一個」塊」(block)。這種由多個扇區組成的」塊」,是文件存取的最小單位。」塊」的大小,最多見的是4KB,即連續八個 sector組成一個 block。
文件數據都儲存在」塊」中,那麼很顯然,咱們還必須找到一個地方儲存文件的元信息,好比文件的建立者、文件的建立日期、文件的大小等等。這種儲存文件元信息的區域就叫作inode,中文譯名爲」索引節點」。
每個文件都有對應的inode,裏面包含了與該文件有關的一些信息。
如何查看系統的 innode 佔用狀況
df
-i
如何查找那個目錄下文件最多
首先切到根目錄
/
cd
/
而後執行
for
i
in
/*; do echo
$i
; find
$i
| wc -l; done
或者(如下命令能夠任意目錄執行)
for i in `ls -1A | grep -v "\.\./" | grep -v "\./"`; do echo "`find $i | sort -u | wc -l` $i"; done | sort -rn | head -10
這樣會依次返回 / 目錄下文件最多的目錄,進入這個目錄,再執行上述命令,就這樣層層深刻最終肯定是那個目錄文件最多node
如何刪除那個目錄的的全部文件
通常狀況下,若是這個目錄下應該會有數以百萬的文件,若是你直接用
rm -rf 目錄名
的話效率會很低,能夠用下面方法
find
目錄 -
type
f
-name
'*'
-print0 | xargs -
0
rm
時間可能會比較久,因此你最好開一個 screen 來處理
有多是你遇到了下面的狀況
/var/spool/postfix/maildrop 下面有不少文件該目錄爲cron計劃任務時記錄的日誌文件
爲了不,能夠執行
crontab -e
在最開頭添加
MAILTO=""
保存 這樣就不會記錄日誌了,而後
server crond restart
重啓 crond
能夠執行
cd /var/spool/postfix/maildrop
rm -rf * //命令刪除全部文件若是太多這個命令會報錯,能夠用下面的命令
或
ls | xargs -n 10 rm -rf 循環刪除