<p>根目录空间占满需先用df -h和df -i确认/分区Use%≥95%或inode耗尽,再用du -shx /* 2>/dev/null | sort -hr | head -10定位大目录,重点清理/var/log/journal、/var/cache/apt/archives和/tmp,最后用lsof +L1释放被进程占用的已删文件空间。</p>

统信UOS系统根目录空间占满后,执行命令、保存文件、登录桌面甚至启动服务都会突然报“No space left on device”,此时连sudo日志都写不进去,【/目录挂载的分区已100%使用】,必须立刻定位并释放空间,否则图形界面无法加载、系统服务陆续崩溃。
确认是否真为根目录空间耗尽
先排除误判:有些用户看到“空间不足”就直接删/var/log,结果发现df -h里/才用了82%,真正满的是/data或/home独立挂载的小分区。所以第一步永远是看真实挂载点。
执行df -h,找到Mounted on列为/的那一行,确认Use%是否≥95%;再立刻执行df -i,检查IUse%是否达到100%——【inode耗尽也会触发同一错误,但清理路径完全不同】。
如果/的Use%不到90%,请立即停止本流程,转去检查其他挂载点(如df -h | grep -E "(home|data|var)")。
快速定位根目录下最大空间占用源
别用du -sh /*硬扫——它会遍历/proc、/sys等虚拟文件系统,报一堆Permission denied且拖慢速度。要加-xdev参数限定只查根分区本身。
方法一:一键列出根目录下前10个最大子目录
执行du -shx /* 2>/dev/null | sort -hr | head -n 10。注意-xdev(简写为-x)确保不跨分区,2>/dev/null过滤权限错误干扰。
方法二:跳过明显安全区,直击高危目录
重点检查三个位置:/var/log(日志滚存)、/var/cache/apt/archives(Debian系包缓存)、/tmp(可能残留大临时文件)。分别执行:du -sh /var/log/* | sort -hr | head -5du -sh /var/cache/apt/archives/* 2>/dev/null | sort -hr | head -3ls -lSh /tmp | head -5
这一步操作起来很简单,直接把命令复制粘贴进终端回车就行。如果看到/var/log/journal占了8G或/var/cache/apt/archives有2.3G未清理deb包,就锁定目标了。
安全清理高频罪魁
第一步:清空 systemd journal 日志(统信UOS默认启用)
执行sudo journalctl --disk-usage查看当前占用;若超过500MB,运行sudo journalctl --vacuum-size=100M保留最近100MB日志,其余全部清除。这比rm -rf /var/log/journal安全,不会破坏journal索引结构。
第二步:清理APT包缓存
执行sudo apt clean(清空/var/cache/apt/archives所有.deb文件)→ 再执行sudo apt autoremove --purge(卸载无依赖旧内核和残留配置)。注意:不要用apt-get autoclean,它只删旧版本安装包,不删当前版本缓存。
第三步:处理/var/log下的滚动日志
先进入cd /var/log → 执行sudo find . -name "*.log.*" -mtime +30 -delete(删30天前的压缩日志)→ 再执行sudo find . -name "*.1" -delete(删轮转副本)。【切勿直接rm -rf /var/log/*,会删除rsyslog、auth.log等正在写入的关键日志文件,导致后续日志丢失】。
释放被进程占用的“幽灵空间”
有时候你明明rm -f bigfile.log了,df -h还是显示空间没回来——那是某个进程(比如tail -f、rsyslogd)还拿着这个已被删除文件的句柄没释放。这时候空间就被“幽灵”占着。
执行sudo lsof +L1,列出所有已删除但仍被打开的文件;若输出非空,记录第二列PID和最后一列文件路径;对每个PID,执行sudo kill -HUP PID(平滑重启进程)或sudo systemctl restart 对应服务名(如sudo systemctl restart rsyslog)。
这一步做完,立刻再跑一次df -h,你会发现Available值跳升——被释放的空间回来了。

















