當你的Linux服務器突然彈出“磁盤空間不足”的警告時,是不是有點手足無措?別慌!磁盤空間不足是新手常見的問題,但只要掌握幾個簡單的清理技巧,就能讓服務器重新“輕裝上陣”。本文將用最基礎的命令和步驟,帶你一步步搞定磁盤空間問題,全程簡單易懂,跟着操作就能上手。

一、先看看磁盤空間用了多少?

第一步,要知道“哪裏佔用了空間”,得先查看磁盤整體使用情況。Linux下最常用的命令是 df -h,它能以人類可讀的方式(比如GB、MB)顯示磁盤分區的使用狀態。

df -h

執行後你會看到類似這樣的輸出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       20G   15G  5.0G  75% /
tmpfs           2.0G     0  2.0G   0% /dev/shm

這裏 Used 列就是已用空間,Avail 是可用空間。重點關注根目錄 //var 這類系統目錄,通常是空間佔用大戶。

二、找出“空間小偷”——定位大文件

知道整體情況後,需要定位到底是哪些文件/目錄佔了空間。最常用的工具是 du -sh(顯示目錄大小)和 find(搜索文件)。

1. 快速定位大目錄

比如查看 /var 目錄下的子目錄大小:

du -sh /var/*

輸出類似:

4.0K  /var/backups
1.2G  /var/cache
500M  /var/lib

這裏能看到 /var/cache/var/lib 可能是“嫌疑犯”。

2. 找大文件(比如超過100MB的文件)

find 命令搜索系統中大於100MB的文件(注意:/ 可能耗時較長,可先從 /home/tmp 等用戶目錄開始):

find / -type f -size +100M 2>/dev/null
  • -type f:只找文件(不包括目錄);
  • -size +100M:文件大小大於100MB;
  • 2>/dev/null:忽略找不到權限的錯誤信息,避免干擾。

三、針對性清理:這些“空間殺手”要重點關注

1. 清理日誌文件(/var/log 目錄)

日誌文件是磁盤空間的“隱形殺手”,尤其是 /var/log 裏的日誌(比如系統日誌、應用日誌)。但千萬別直接刪整個目錄

  • 方法1:清空特定日誌(謹慎操作)
    有些日誌文件可能已經不再寫入(比如舊系統日誌),可以用 echo "" > /var/log/syslog 清空(需確認是否有新日誌寫入,用 tail -f /var/log/syslog 查看即時日誌)。
    注意:如果日誌正在被程序寫入(比如用 tail -f 看到內容在更新),直接清空可能導致數據丟失!

  • 方法2:用 logrotate 自動管理日誌
    Linux自帶的 logrotate 工具會自動輪轉日誌(比如壓縮舊日誌),避免日誌無限增長。如果系統已配置,直接執行 sudo logrotate -f /etc/logrotate.conf 強制輪轉一次即可。

  • 方法3:刪除舊日誌壓縮包
    有些日誌會被壓縮成 .gz.bz2 文件(比如 messages-202301.gz),這些是歷史日誌,確認無用後可直接刪除:

  sudo rm /var/log/*.gz

2. 清理緩存和臨時文件

系統緩存、臨時文件(/tmp/var/tmp)也會佔用空間,可按以下步驟清理:

  • 釋放系統緩存
    Linux會將頻繁訪問的文件緩存到內存,若內存充足但磁盤空間緊張,可清理緩存(不需要擔心數據丟失,這只是釋放系統緩存):
  sudo sync  # 同步數據到磁盤,避免數據丟失
  echo 3 > /proc/sys/vm/drop_caches  # 釋放所有緩存
  • 清理臨時文件
    /tmp 是臨時文件的“聚集地”,大部分文件重啓後會自動消失,但長期未清理的文件可能殘留。直接刪除:
  sudo rm -rf /tmp/* /var/tmp/*

注意:若有程序正在使用 /tmp 裏的文件(比如某個軟件臨時生成的文件),刪除可能導致程序報錯,刪除前建議確認文件是否爲“孤兒文件”(用 lsof /tmp/xxx 查看是否被佔用)。

3. 卸載無用軟件包

如果系統安裝了不需要的軟件(比如舊版本工具、測試包),可以用包管理器卸載釋放空間。

  • CentOS/RHEL 系統(用 yum):
  sudo yum remove 軟件包名稱  # 卸載單個軟件
  sudo yum clean all          # 清理緩存的安裝包(.rpm文件)
  • Ubuntu/Debian 系統(用 apt):
  sudo apt remove 軟件包名稱  # 卸載單個軟件
  sudo apt autoremove         # 卸載無用依賴
  sudo apt clean              # 清理緩存的安裝包(.deb文件)

4. 清理用戶目錄大文件

如果是個人用戶服務器,/home 目錄下可能有用戶下載的大文件(比如電影、安裝包)。可以讓用戶登錄後檢查自己的目錄:

cd ~  # 進入當前用戶目錄
du -sh *  # 查看當前目錄下所有文件/文件夾大小

若發現無用的大文件(比如幾個GB的壓縮包),直接刪除即可:

rm -rf 大文件名稱  # 徹底刪除(需確認!)

四、注意事項:這些操作千萬別踩坑!

  1. 別刪系統關鍵文件:比如 /etc/bin/usr 下的核心文件,刪除會導致系統故障!
  2. 刪除前先確認:用 lscat 先查看文件內容,比如 cat /var/log/syslog 確認是否爲舊日誌。
  3. 非root操作需謹慎:刪除系統目錄(如 /var)或修改系統文件(如 /etc)需要 sudo 權限,避免誤操作。
  4. 定期清理更省心:養成每週檢查磁盤空間的習慣,小問題早發現早解決,避免堆積成大問題。

總結:清理步驟優先級

  1. df -h 看整體空間;
  2. du -sh 定位大目錄;
  3. find 找大文件;
  4. 優先清理日誌、緩存、臨時文件;
  5. 卸載無用軟件,刪除用戶大文件。

按照這個流程操作,即使是新手也能輕鬆清理出足夠的磁盤空間。記住,Linux系統本身很穩定,只要不盲目刪除關鍵文件,清理過程是安全的!如果遇到不確定的文件,先備份或查閱資料,安全第一哦~

小夜