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 磁盤清理實戰:find 定位大文件、日誌截斷與安全刪除策略

編輯:關於 Linux

磁盤空間告警時,盲目刪除文件極易誤傷業務。本文建立「掃描定位 → 風險評估 → 分級清理 → 空間回收」標準化流程,提供生產環境可直接使用的命令組合與安全守則。

磁盤清理流程圖

第一階段:掃描定位大文件/目錄

1. 找出佔用空間最大的目錄(Top 10)

du -h --max-depth=1 / | sort -hr | head -10
# 或指定分區
du -h --max-depth=1 /var | sort -hr | head -10

2. 精確定位大文件(>100M)

find / -xdev -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr | head -20
# -xdev 不跨越文件系統邊界(避免掃描 /proc /sys /mnt)
# sort -k5 -hr 按第 5 欄(大小)人類可讀倒序

3. 找出特定類型大文件

# 日誌文件
find /var/log -type f -name "*.log" -size +50M -ls

# 核心轉儲
find / -name "core.*" -size +10M -ls

# 臨時文件
find /tmp /var/tmp -type f -size +10M -ls

# Docker 佔用
docker system df -v

第二階段:風險評估與分級清理

文件類型風險等級清理方式備註
應用日誌低truncate -s 0 /var/log/app.log 或 echo "" > log保留 inode,不影響正在寫入的進程
系統日誌低journalctl --vacuum-size=500Msystemd 日誌專用
舊備份/歸檔低find /backup -mtime +30 -delete確認備份策略後執行
核心轉儲中rm -f /core.*先確認無調試需求
Docker 未用鏡像/卷低docker system prune -a --volumes生產環境謹慎用 --volumes
應用數據文件極高嚴禁直接刪除需開發/業務確認
數據庫文件極高嚴禁直接刪除需 DBA 介入

第三階段:安全刪除最佳實踐

1. 日誌截斷(零風險、即時生效)

# 正確姿勢:清空內容保留文件句柄
: > /var/log/nginx/access.log
# 或
truncate -s 0 /var/log/nginx/access.log
# 或
cp /dev/null /var/log/nginx/access.log

# 錯誤姿勢:rm 刪除 → 進程仍持有舊 inode → 空間不釋放 → 需重啟進程

2. 安全刪除大文件(防誤刪)

# 1. 先移動到臨時目錄確認
mkdir -p /tmp/to_delete
mv /path/to/large_file /tmp/to_delete/
# 2. 觀察業務 10-30 分鐘無異常
# 3. 確認無誤後刪除
rm -f /tmp/to_delete/large_file

# 批量安全刪除模板
find /var/log -name "*.log.*.gz" -mtime +7 -exec mv -t /tmp/to_delete/ {} +
# 確認後
rm -rf /tmp/to_delete/*

3. 釋放已刪除但被進程持有的空間

# 找出已刪除但佔用空間的文件
lsof | grep deleted

# 釋放方式:重啟對應進程,或通過 /proc 截斷
# 示例:pid 1234 持有 fd 4
: > /proc/1234/fd/4

第四階段:預防性架構

  1. 日誌輪轉: /etc/logrotate.d/app 配置 daily, rotate 7, compress, delaycompress, missingok, notifempty
  2. 磁碟監控告警: Prometheus node_filesystem_avail_bytes < 15% 告警
  3. 數據分級存儲: 熱數據 SSD、溫數據 HDF、冷數據對象存儲
  4. 容器化限制: Docker --log-opt max-size=10m --log-opt max-file=3

總結

磁盤清理的鐵律:**「不確定不刪除,日誌只截斷不刪除,大文件先移動後確認」**。建立 du/df/find/lsof 四大金剛肌肉記憶,配合 logrotate 自動化、監控預警,將磁盤告警從「深夜救火」轉為「例行巡檢」。

Copyright © Windows教程網 All Rights Reserved