乐于分享
好东西不私藏

信创电脑磁盘空间告急?三步揪出真凶

信创电脑磁盘空间告急?三步揪出真凶

上周同事找我,说他那台麒麟桌面版开机慢得要死,让我看看怎么回事。

我登上去一看,根分区红了,50G 的盘用了 47G。他说自己啥也没装,不可能满。结果一查,journal 日志占了 15G——这玩意儿不清理的话会一直涨,很多人不知道。

今天把排查思路整理一下,以后遇到类似情况直接照着来。

先看哪个分区红了

上来先跑 df -h,看一眼整体情况:

df -h

根分区、/var/home 这三个最容易爆满。找到红的那个,继续往下挖。

往下挖,看谁吃的最多

sudo du -sh /* 2>/dev/null | sort -rh | head -10

这个命令就是把根目录下面每个文件夹的大小列出来,从大到小排。一眼就能看出谁是大户。

如果 /var 最大,再往里钻一层:

sudo du -sh /var/* 2>/dev/null | sort -rh | head -5

一层层往下找,直到定位到具体是哪个目录撑爆的。

找到原因,对症处理

挖出来的结果,一般就这几种情况:

journal 日志爆了(最常见)

journalctl --disk-usage
# 只保留最近 3 天的日志
sudo journalctl --vacuum-time=3d
# 或者限制总大小为 200M
sudo journalctl --vacuum-size=200M

光清理还不够,得设个上限,不然过段时间又满了:

echo "SystemMaxUse=200M" | sudo tee -a /etc/systemd/journald.conf
sudo systemctl restart systemd-journald

旧内核没删

系统更新之后旧内核会留下来,不手动删的话一直堆着:

dpkg -l | grep linux-image
sudo apt autoremove --purge

apt 缓存

sudo apt clean
sudo apt autoremove

用户目录塞了一堆东西

sudo find /home -type f -size +500M -exec ls -lh {} \\
ls -lh ~/.cache/
ls -lh ~/.local/share/Trash/

懒人一键脚本

上面这些操作可以合成一个脚本,以后直接跑一遍就行:

#!/bin/bash
echo "=== 清理前 ==="
df -h /

echo "[1/4] 清理 journal 日志..."
sudo journalctl --vacuum-time=3d

echo "[2/4] 清理 apt 缓存..."
sudo apt clean

echo "[3/4] 移除无用依赖..."
sudo apt autoremove -y

echo "[4/4] 清理临时文件..."
sudo rm -rf /tmp/* 2>/dev/null
sudo rm -rf /var/tmp/* 2>/dev/null

echo "=== 清理后 ==="
df -h /

上面那台机器跑完,47G 变 30G,清出来 17G👇

几个容易踩的坑

别直接 rm 正在写入的日志文件,有的服务会报错。用 truncate 截断比较安全:

sudo truncate -s 0 /var/log/syslog

别删当前内核,删了重启直接起不来。先用 uname -r 看看自己在用哪个版本。

Docker 也是隐形大户,镜像和容器不清理的话很容易吃掉好几个 G:

docker system prune -a

最后说两句

磁盘清理其实就一个思路:先看清全局 → 一层层往下挖 → 找到原因再动手。别上来就一顿 rm,搞不好把重要东西删了。

能用系统自带工具清理的(journalctl --vacuumapt clean),优先用工具,别手动删文件。

以上命令在银河麒麟 V10、统信 UOS V20 上都跑过,没问题。

📌 三页札记,专注信创运维实战
每天分享银河麒麟/UOS 踩坑经验
👆 点击上方「三页札记」关注,不错过更新

📚 往期推荐

🔸 银河麒麟运维踩坑指南:软件源配置篇