Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 磁碟滿了怎麼辦?df/du/fdisk 急診三步走 + 清理指南

編輯:關於 Linux

系統無法寫入、服務啟動失敗、資料庫報錯,多半是磁碟 100% 滿了。本文提供 三步急診流程:df -hl 確認分區滿載 → du 定位大目錄 → lsof 找被刪除仍佔用空間的檔案,並給出釋放空間的標準動作清單。

df -hl 輸出範例

步驟 1:df -hl 確認哪個分區滿了

df -hl
# 輸出範例
Filesystem      Size  Used Avail Use% Mounted on
/dev/hda2        45G   19G   24G  44% /
/dev/hda3       9.7G  7.2G  2.1G  78% /usr/local
/dev/hdb2       75G   75G     0 100% /    ← 罪魁禍首:根分區 100%
  • Use% 100% 且 Avail 0 → 該分區已無可用空間,必須立即清理
  • 注意:/dev/hdb2 掛載在 /,影響全系統

步驟 2:du 定位大目錄/大檔案

常用組合

指令用途
du -sh /目錄顯示目錄總大小 (人類可讀)
du -h --max-depth=1 /目錄顯示第一層子目錄大小
du -h --max-depth=0 /目錄等同 du -sh
du -sh /opt/oracle指定路徑統計 (範例輸出 5.6G)

實戰:找出根分區下佔用最大的前 10 項

du -h --max-depth=1 / | sort -hr | head -10

步驟 3:lsof 找「幽靈檔案」——已刪除但進程持有開啟

lsof | grep deleted
# 輸出範例
java      1234 user  4u   REG  253,0  10G  12 /var/log/app.log (deleted)
  • 此時 df 顯示空間已用,但 du 統計不到 (目錄項已刪除)
  • 解決:kill -9 1234 重啟服務,或 truncate -s 0 /proc/1234/fd/4 釋放空間 (不重啟)

輔助診斷指令速查

df -h              # 每個掛載點分區大小
df -H              # 以 1000 為基數 (廠商標示法)
du -sm 目錄        # 以 MB 為單位顯示總和
fdisk -l           # 查看分區表結構
hdparm -i /dev/hda # IDE 磁碟資訊
hdparm -I /dev/sda # SATA/SCSI 磁碟詳細資訊
blktool /dev/sda id # 另一種查看 SCSI 裝置 ID
sync; fuser -km /media/usbdisk # 強制釋放 USB 掛載點

緊急清理動作清單 (按風險低→高)

  1. APT/YUM 快取:apt clean / yum clean all
  2. Journal 日誌:journalctl --vacuum-size=200M
  3. 舊核心套件:apt autoremove --purge 'linux-image-*' (保留當前+1)
  4. /tmp、/var/tmp:find /tmp -type f -mtime +7 -delete
  5. 壓縮/移動大日誌:gzip /var/log/*.log.1 或 mv /var/log/big.log /data/logs/
  6. Docker 清理:docker system prune -a --volumes
  7. 幽靈檔案釋放:truncate -s 0 /proc/PID/fd/FD

核心原則:先 df 定分區,再 du 找大戶,最後 lsof 抓幽靈。動手前先備份關鍵資料,清理後驗證服務正常。

Copyright © Windows教程網 All Rights Reserved