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 重新掛載 /var 分區釋放被佔用磁碟空間實戰

編輯:關於 Linux

刪除 /var 下大檔(如日誌)後,df 顯示空間未釋放而 du 顯示已減少,典型原因是檔案仍被進程開啟(文件描述符未釋放)。本文提供腳本化流程:識別佔用進程 → 停止服務 → 卸載分區 → 重新掛載 → 重啟服務,徹底釋放空間。

第一步:找出佔用 /var 的進程

# lsof | grep /var
auditd   1182 root  5w  REG  252,1  3288401  2885177 /var/log/audit/audit.log
rsyslogd 1198 root  1w  REG  252,1     1507  2885223 /var/log/messages
rsyslogd 1198 root  2w  REG  252,1   105277  2885155 /var/log/cron
rsyslogd 1198 root  4w  REG  252,1     4310  2885224 /var/log/secure

常見佔用服務:pcscd、crond、syslog/rsyslogd、auditd。

第二步:自動化卸載/重掛載腳本

#!/bin/bash
ServerList="pcscd crond syslog auditd"
Disk=$(df -h | grep "/var" | awk '{print $1}')

# 停止佔用服務
for server in $ServerList; do
    service $server stop
done

# 卸載 /var
umount /var

# 重新啟動服務
for server in $ServerList; do
    service $server start
done

# 重新掛載
mount $Disk /var

關鍵點解析

  • 服務清單視實際情況調整: 用 lsof | grep /var | awk '{print $1}' | sort -u 動態生成;
  • umount 失敗處理: 若仍提示 busy,檢查是否有漏網進程,必要時 fuser -km /var;
  • 生產環境謹慎操作: 停止 syslog/auditd 會導致審計日誌中斷,建議維護窗口執行並提前通知;
  • 替代方案: 若知曉具體進程(如 rsyslogd),單獨 systemctl restart rsyslog 即可釋放該檔案描述符,無需卸載整個分區。

驗證空間釋放

df -h /var
du -sh /var
# 兩者數值應一致

掌握此流程,舉一反三可處理 /home、/opt 等任何被進程佔用導致空間「失蹤」的分區問題。

Copyright © Windows教程網 All Rights Reserved