Linux 系统下 home文件占比较大,但没有看到很大的文件,没有空间的解决办法

本文讲述了在Linux系统中,如何通过正确删除文件来有效回收磁盘空间。作者分享了因误用右键删除导致/home分区空间异常占用的问题及解决过程,强调了采用rm命令彻底删除文件的重要性。

问题描述:

最初分区时,/home分区是250G,在经过一段时间的使用后发现空间只剩下10多个G,然而采用du -h –-max-depth=0 *检查/home文件下的使用情况,发现有效的占用只有100G左右。
故怀疑由于之前删除文件的方式不当,右键删除,造成垃圾文件没有被及时清理,实质上继续暂用空间。

解决办法

cd~/.local/share/Trash/files到对应存放trash的为止
du -sh查询该空间暂用的大小,125G, 明确原因(删除方式不当)
sudo rm -rf *删除文件
sudo rm -rf .*删除隐藏文件,
du -sh 再次查询, 904 k
df -h查询,显示使用99G,剩余154G, 问题解决。

启示

  1. 采用鼠标右键删除,并没有真正地删除文件,而是转移到/home的文件夹中保存,未来删除文件的时候,采用 rm -rf的方式彻底删除。
  2. 开始使用linux系统,就要逐步习惯命令行的方式,虽然艰难,要逐步习惯。包括vim等基本命令。
<think>我们正在处理用户关于Linux根目录磁盘空间用异常的问题。之前用户已经尝试查看根目录下的文件用(`sudo du -sh /*`)但未发现明显异常,这意味着常规的文件/目录不在根目录直接可见的子目录中。这种情况可能是由于隐藏文件、挂载点、或已删除文件仍被进程用(lsof)导致的。 ### 解决思路: 1. **验证磁盘使用情况**:使用`df`确认根目录用确实很高,而`du`扫描根目录未发现文件,这种差异通常意味着存在"隐藏"的空间用。 2. **检查已删除文件但仍被进程打开的文件**:使用`lsof`命令查已被删除但未释放空间文件(这些文件在`du`中不可见,但在`df`中仍空间)。 3. **检查挂载点**:确保没有其他分区挂载到根目录的子目录上(如/home、/var等单独分区),这样`du`才会正确统计。 4. **检查隐藏目录**:根目录下可能有隐藏目录(如/.cache,/.local等)空间,需用`du -sh /.*`检查。 5. **检查稀疏文件、磁盘配额、或文件系统元数据**:这些情况较罕见。 ### 具体步骤: #### 步骤1:确认磁盘用 使用`df`查看根分区使用率: ```bash df -h / ``` 记录已用百分比。 #### 步骤2:对比根目录下各子目录小 用户已执行过`sudo du -sh /*`,但未发现异常。现在需要扩展检查: - 包含隐藏目录:`sudo du -sh /.* 2>/dev/null` (注意:/.*会匹配根目录下的隐藏目录,但也会匹配到/.和/..,这两个可以忽略) - 更精确地检查所有一级目录(包括隐藏的): ```bash sudo du -sh /* /.* 2>/dev/null | sort -h ``` 注意:此命令可能会报一些权限错误,但可以忽略。重点关注输出中较的目录。 #### 步骤3:检查已删除但未释放的文件 使用`lsof`查被删除的文件(这些文件在目录中不可见,但仍用磁盘空间): ```bash sudo lsof +L1 | grep -i deleted ``` 输出示例: ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 12345 user 1w REG 253,0 100000000 1234 /path/to/file (deleted) ``` 这些文件虽然被删除,但因为进程还在打开它们,所以空间未被释放。解决方法:重启持有该文件的进程或服务。 #### 步骤4:检查挂载点 确保没有其他分区挂载到根目录的子目录: ```bash df -Th | grep -v tmpfs ``` 对比输出中的挂载点,看是否有挂载在根目录子路径(如/var、/usr等)的分区。如果没有,则所有子目录都应计入根分区空间。 #### 步骤5:深入扫描目录 如果前几步仍未到,可能需要深入扫描。例如,如果我们发现/var目录较,则进一步扫描/var下的子目录: ```bash sudo du -sh /var/* 2>/dev/null | sort -h ``` #### 步骤6:使用图形化工具(可选) 安装图形化工具如`baobab`(磁盘使用分析器)进行可视化分析: ```bash sudo apt install baobab # Debian/Ubuntu sudo yum install baobab # CentOS/RHEL ``` 然后以root权限运行: ```bash sudo baobab ``` #### 步骤7:文件系统检查 极端情况下,可能是文件系统元数据问题(如inode耗尽或元数据损坏): - 检查inode使用:`df -i /` - 如果inode用尽,需要清理小文件(即使它们用的空间)。 ### 示例问题解决流程: 假设我们运行`sudo lsof +L1 | grep -i deleted`发现某个已删除的日志文件仍被Apache用: ```bash apache2 1234 root 1w REG 8,1 1000000000 123456 /var/log/apache2/access.log (deleted) ``` 此时,我们可以重启Apache服务释放空间: ```bash sudo systemctl restart apache2 ``` 然后再次检查`df -h /`,空间应该被释放。 ### 注意事项: - 清理系统文件前务必确认文件用途,避免误删重要数据。 - 定期清理日志(使用logrotate)可预防空间不足。 ### 相关问题: 1. 如何查Linux中被删除但仍被进程用的文件? 2. Linux根目录磁盘空间不足时有哪些常见原因? 3. 如何安全清理/var/log目录下的日志文件? 4. 为什么`df`和`du`显示的磁盘使用情况不一致? ### 引用说明: 在回答中,我们参考了用户提供的引用内容,特别是关于使用`du`和`df`命令分析磁盘空间的方法[^1][^2],以及清理日志文件的实践[^2]。同时,我们也结合了Linux系统管理的通用知识。 </think>### 解决 Linux 根目录磁盘空间异常用的排查指南 当 `df -h` 显示根分区空间不足,但 `sudo du -sh /*` 未发现明显文件时,可能是由于隐藏空间用或特殊文件类型导致。以下是系统性的排查方法: --- #### **1. 验证磁盘用差异** 使用 `df` 和 `du` 对比结果: ```bash # 查看根分区使用率(重点关注 Use%) df -h / # 扫描根目录下所有*可见*目录小 sudo du -sh /* 2>/dev/null | sort -h ``` 🔍 **现象分析**: 若 `df` 显示使用率 >80%,但 `du` 统计总和远小于分区容量,则存在 **"隐藏用"**。 --- #### **2. 定位隐藏用的原因** ##### 可能原因 1️⃣:**已删除文件仍被进程用** ```bash # 查已被删除但未释放空间文件 sudo lsof +L1 | grep -i deleted ``` ✅ **解决方法**: - 重启持有该文件的进程(如 `sudo systemctl restart 服务名`) - 或直接终止进程:`sudo kill -9 <PID>` ##### 可能原因 2️⃣:**挂载点覆盖导致统计遗漏** ```bash # 检查是否有分区挂载到子目录 findmnt -T / | grep -v "/ type rootfs" ``` 📌 **关键点**: 若 `/var`、`/home` 等目录被单独分区挂载,`du /` 不会统计其真实小。 ##### 可能原因 3️⃣:**稀疏文件或磁盘配额** ```bash # 检查稀疏文件(如虚拟磁盘) sudo find / -type f -exec du -sh {} + | grep "0\s" # 查看磁盘配额 sudo repquota -a ``` ##### 可能原因 4️⃣:**隐藏目录用** ```bash # 扫描根目录下的隐藏目录(如 .cache, .snap) sudo du -sh /.* 2>/dev/null | grep -E '[0-9]+G' ``` --- #### **3. 高级排查工具** ##### 使用 `ncdu` 交互式扫描 ```bash sudo apt install ncdu # Debian/Ubuntu sudo ncdu / --exclude /mnt --exclude /proc ``` 方向键导航,`d` 删除文件(谨慎操作) ##### 检查日志文件(常见于 `/var`) ```bash # 检查日志文件 sudo journalctl --disk-usage sudo du -sh /var/log/* | grep G # 清理日志(示例) sudo journalctl --vacuum-size=500M # 保留500MB日志 ``` --- #### **4. 文件系统级检查** ```bash # 检查 inode 使用情况(可能 inode 耗尽) df -i / # 文件系统错误修复(需卸载分区) sudo umount / sudo fsck -y /dev/sda1 # 替换为实际分区 ``` --- #### **5. 扩展分区(终极解决方案)** 若确认是分区容量不足: ```bash # 扩展逻辑卷(LVM 环境) sudo lvextend -L +20G /dev/mapper/ubuntu-vg/root # 增加20GB sudo resize2fs /dev/mapper/ubuntu-vg/root # EXT4 文件系统 ``` ```bash # XFS 文件系统扩展 sudo xfs_growfs /dev/mapper/cl-root # 如引用[3]的方法 ``` --- ### 📚 引用说明 - 使用 `df` 和 `du` 定位空间用的基础方法 [^1] - 清理 `/var/log` 日志的实践 [^2] - 文件系统扩展操作 [^3] --- ### 相关问题 1. 如何安全清理 Linux 系统中的 `/var/log` 日志文件? 2. LVM 分区扩展的具体步骤是什么? 3. 为什么已删除的文件仍会用磁盘空间? 4. 如何防止 Linux 根分区磁盘空间不足?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值