長期使用 Ubuntu 可能遇到根分區空間暴漲,罪魁禍首往往是隱藏文件 .xsession-errors.old。本文記錄排查過程,並深入講解 chattr 命令賦予文件“不可變”屬性,從根源杜絕日志瘋狂增長。
~/.xsession-errors.old 體積達 22GB,佔滿磁盤。rm ~/.xsession-errors.old touch ~/.xsession-errors.old sudo chattr +i ~/.xsession-errors.old
步驟:刪除原文件 → 重建同名空文件 → 加 +i 屬性使其不可修改/刪除/重命名/鏈接。此后 X 會話嘗試寫入將失敗,不再佔用空間。
| 屬性 | 含義 | 典型場景 |
|---|---|---|
| i | 不可修改:禁止刪除、重命名、鏈接、寫入、追加 | 保護關鍵配置、防止日志暴增、安全加固 |
| a | 僅追加:只能向文件末尾寫入,不可刪除/覆蓋(需 root 設置) | 服務器日志文件防篡改 |
| S | 同步 I/O:寫入即同步到磁盤(類似 sync 掛載選項) | 關鍵數據安全 |
| c | 壓縮存儲:內核自動壓縮/解壓 | 節省空間(需文件系統支持) |
| d | 無 dump:排除在 dump 備份之外 | 臨時文件、緩存 |
| u | 可恢復刪除:刪除後數據保留磁盤,可嘗試恢復 | 重要文件防誤刪 |
操作語法:chattr [+-=][屬性] 文件;查看:lsattr 文件。
chattr 無法保護 /、/dev、/tmp、/var 目錄本身。+i 僅 root 可設置/移除,提供極強保護。sudo chattr -i 文件。善用 chattr +i 可一勞永逸解決特定日志文件瘋狂增長問題,同時提升關鍵文件安全性。