Linux系統清理釋放磁盤空間的常用方法
在清理前,需先定位占用空間最多的分區或目錄。使用df -h命令查看各掛載點的磁盤使用詳情(如根分區/的使用率),再用du -ah --max-depth=1 | sort -rh | head -n 10命令列出當前目錄下最大的10個文件/目錄,快速識別空間占用大戶。
包管理器(如APT、YUM)安裝軟件時會保留下載的安裝包緩存,長期積累會占用大量空間。
sudo apt clean(清除所有緩存包)和sudo apt autoclean(僅清除舊緩存包);sudo dnf clean all(清除所有緩存)或sudo yum clean all(舊版本)。sudo apt autoremove(Debian/Ubuntu)或sudo dnf autoremove(RHEL/CentOS)自動刪除不再需要的依賴包;dpkg --list | grep linux-image列出所有內核,再用sudo apt purge linux-image-<舊版本號>刪除;rpm -q kernel列出內核,再用sudo yum remove kernel-<舊版本號>刪除。sudo update-grub更新引導器配置。/tmp(重啟后自動清理)和/var/tmp(持久化臨時文件)中,運行sudo rm -rf /tmp/*和sudo rm -rf /var/tmp/*安全清理;/var/log目錄下的日志文件(如*.log)會隨時間增長,可通過sudo journalctl --vacuum-time=7d保留最近7天的日志,或手動刪除舊日志(如sudo rm /var/log/*.log)。使用find命令批量查找并刪除大文件:
find . -type f -size +100M;find /path/to/directory -type f -size +1G -exec rm -fv {} +(替換/path/to/directory為目標路徑)。若系統運行Docker,未使用的鏡像、容器、卷會累積占用空間。運行docker system prune -a --volumes命令清理所有未使用的資源(包括鏡像、容器、卷、網絡);若僅需清理停止的容器和未使用的網絡,可運行docker container prune && docker network prune。
某些進程可能仍在使用已被刪除的文件(如日志文件),導致磁盤空間未釋放。通過lsof | grep deleted命令查找被刪除但仍被進程占用的文件,記下相關進程的PID,若可重啟服務則重啟對應服務;若需立即釋放空間,可終止該進程(kill -9 PID,替換為實際PID)。
系統緩存(頁面緩存、目錄項緩存、inode緩存)會占用內存,但Linux內核會自動管理。若需手動清理(如調試或測試),可按以下步驟操作:
sync(將未寫入磁盤的緩存數據寫入磁盤);echo 3 | sudo tee /proc/sys/vm/drop_caches(清除頁面緩存、目錄項緩存、inode緩存)。