ncdu 互動式磁碟使用分析
在 Linux 系統管理中,快速定位佔用磁碟空間的檔案或目錄是日常維護的重要環節。雖然 du 指令是標準工具,但其輸出結果往往冗長且缺乏互動性,難以在海量檔案中迅速找出「元兇」。這時,ncdu (NCurses Disk Usage) 便成為了系統管理員與進階使用者的首選利器。它結合了 du 的計算能力與 ncurses 終端介面,提供了一個流暢、直觀且高度互動的磁碟空間分析體驗。
什麼是 ncdu?
ncdu 是一個輕量級的磁碟空間分析工具,它會掃描指定目錄並計算每個子目錄的大小,然後以樹狀結構呈現。與傳統文字輸出不同,ncdu 允許使用者在終端機中透過鍵盤游標上下移動、進入目錄、刪除檔案,甚至查看檔案詳細資訊。對於伺服器管理而言,這種即時反饋機制能大幅縮短故障排除的時間。
安裝與基本使用
在 Ubuntu 22.04 或 Debian 12 上,安裝 ncdu 非常簡單。由於它不在核心套件庫中,通常位於 universe 或 main 庫內(視發行版而定),我們可以使用 apt 進行安裝:
sudo apt update
sudo apt install ncdu
安裝完成後,只需輸入 ncdu 並指定要分析的目錄即可。若未指定路徑,預設會分析當前目錄。
ncdu /var/log
執行後,您會看到一個黑底綠字的介面。頂部顯示統計資訊,中間列出目錄與檔案,底部則是操作提示。
核心功能與快捷鍵解析
ncdu 的強大之處在於其豐富的快捷鍵系統。以下是幾個最實用的操作:
- 瀏覽目錄:使用上下箭頭鍵選擇項目,按
Enter進入該目錄,按Backspace返回上一層。 - 排序方式:預設是按大小降序排列。您可以按
s切換排序依據,例如按名稱(n)、建立時間(t)或修改時間(m)。 - 刪除檔案:選取檔案或目錄後,按
d即可刪除。這對於清理暫存檔或日誌檔極為方便。注意:刪除前請務必確認路徑,避免誤刪重要資料。 - 排除特定目錄:在掃描時,若希望忽略某些佔用空間大但不需要分析的目錄(如
/proc或/sys),可以使用-x選項。
# 掃描 /home 目錄,但不跨越檔案系統邊界
ncdu -x /home
進階應用與輸出格式
除了互動式介面,ncdu 也支援非互動模式,這對於腳本自動化或生成報告非常有用。您可以使用 -o 選項將結果輸出到檔案,然後用瀏覽器打開 HTML 格式的分析報告,這在視覺化呈現上比終端機更直觀。
# 將分析結果輸出到 report.html
ncdu -o /tmp/report.html -x /var
執行後,打開 /tmp/report.html 您會看到一個色彩豐富的網頁圖表,清晰地展示各目錄的空間佔用比例。
另一個實用的選項是 -e,它允許您指定排除的目錄列表,這比手動輸入 -x 更靈活,特別是在需要排除多個特定路徑時。
# 使用排除清單檔案
echo "/tmp" > exclude.txt
echo "/var/cache" >> exclude.txt
ncdu -E exclude.txt /var
常見問題與解決方案
Q1: 為什麼 ncdu 掃描速度很慢?
ncdu 的速度取決於檔案系統的 I/O 效能。如果您在旋轉硬碟(HDD)上掃描包含數百萬小檔案的目錄(如 /var/lib/docker 或 /home),掃描過程可能會非常緩慢。建議在掃描大型目錄時,使用 ionice 指令降低其優先級,以避免影響其他服務的正常運作:
sudo ionice -c 3 ncdu /var/lib
Q2: 如何以 root 權限掃描系統目錄?
許多系統目錄(如 /etc、/var)需要 root 權限才能完整讀取所有檔案的屬性。如果以一般使用者執行,可能會出現大量「Permission denied」錯誤,導致分析結果不準確。請務必使用 sudo:
sudo ncdu /
小結
ncdu 以其輕巧、快速且互動性強的特點,成為 Linux 系統中不可或缺的工具。它不僅能幫助您快速識別佔用磁碟空間的元兇,其 HTML 輸出功能更為報告與分享提供了便利。對於經常需要處理磁碟空間問題的 Linux 使用者而言,掌握 ncdu 的使用技巧,絕對能提升日常工作的效率與專業度。下次當您發現磁碟空間告急時,不妨試試這個終端機中的空間清道夫。