萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 清理大檔案實戰:find 定位、清空日誌、刪除超大檔、du 排序找出佔空間大戶

磁碟空間告警時,優先清理大檔案見效最快。本文提供**四大實戰指令組合**:精準定位大檔、秒清空日誌、批次刪除超大檔、目錄級排序找出佔空間大戶,助您在幾分鐘內釋放寶貴空間。

磁碟清理示意圖

1. 精準定位大檔案

# 找出 /var/log 下超過 100 MB 的檔案,顯示詳細資訊
find /var/log -type f -size +100M -exec ls -lh {} \;
  • -type f:僅檔案,排除目錄/連結
  • -size +100M:大於 100 MB(單位:k/M/G)
  • -exec ls -lh {} \;:對每個結果執行 `ls -lh` 顯示人類可讀大小

2. 秒清空日誌/文字檔(保留檔案、釋放空間)

# 將巨大日誌清空,inode 不變、服務無需重啟
echo "" > /var/log/nginx/access.log
# 或
: > /var/log/nginx/access.log
# 或
truncate -s 0 /var/log/nginx/access.log

優勢: 檔案句柄不變,正在寫入的服務(Nginx、MySQL、Java 應用)**無需重啟**即可繼續寫入新日誌。

3. 批次刪除超過指定大小的檔案(謹慎使用)

# 刪除 /var/mail 下超過 50 MB 的檔案
find /var/mail -type f -size +50M -exec rm -f {} \;

⚠️ **生產環境建議先加 `-exec ls -lh {} \;` 預覽,確認無誤後再換成 `rm`。**

4. 目錄/檔案級佔用排序(找出空間大戶)

# 顯示當前目錄下一級子目錄/檔案大小,按大小遞減排序,顯示前 10
du -s * | sort -nr | head -10

# 人類可讀格式
du -sh * | sort -hr | head -10

輸出範例

12G     /var/log
8.5G    /home/user/backups
3.2G    /var/lib/mysql
1.1G    /tmp
...

進階:ncdu 互動式分析神器(強烈推薦)

yum install ncdu   # 或 apt-get install ncdu
ncdu /             # 互動式 TUI,鍵盤導航、刪除、刷新

視覺化呈現目錄佔用比例,支援直接在介面刪除檔案,比指令組合直觀得多。

清理前檢查清單

檢查項目指令
確認檔案非進程持有lsof /path/to/bigfile
確認非資料庫/系統關鍵檔file /path/to/bigfile
備份必要日誌cp /var/log/x.log /backup/
記錄清理前 df -hdf -h

結語

磁碟清理核心口訣:**先 `du` 找大戶,再 `find` 定大檔,日誌用 `truncate` 清空,垃圾用 `rm` 徹底刪**。配合 `ncdu` 視覺化工具,從「盲目刪檔」進化為「精準釋放空間」。

copyright © 萬盛學電腦網 all rights reserved