刪除 /var 下大檔(如日誌)後,df 顯示空間未釋放而 du 顯示已減少,典型原因是檔案仍被進程開啟(文件描述符未釋放)。本文提供腳本化流程:識別佔用進程 → 停止服務 → 卸載分區 → 重新掛載 → 重啟服務,徹底釋放空間。
# 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 動態生成;fuser -km /var;rsyslogd),單獨 systemctl restart rsyslog 即可釋放該檔案描述符,無需卸載整個分區。df -h /var
du -sh /var
# 兩者數值應一致
掌握此流程,舉一反三可處理 /home、/opt 等任何被進程佔用導致空間「失蹤」的分區問題。

將 Gedit 打造為類 TextMate 體驗:外觀、字型、語法高亮、檔案瀏覽完整設定指南
CentOS 解除 Fail2ban 封鎖 IP:iptables 列出與刪除封鎖規則
CentOS 安裝 Tmux 終端機多工神器:源碼編譯、常用快捷鍵、分割視窗、會話管理完整圖解
Ubuntu 系統運行 Node.js Hello World 入門實戰
Linux 電子郵件加密完整指南:GPG、ProtonMail 與隱私防護實務
Unix 遷移 Linux 完整指南:系統管理、備份、效能與人才培訓
Linux VLAN、三層交換與 Trunk 概念釐清:Bridge 實作 VLAN、802.1Q 標記、Router-on-a-Stick 實戰