linux系统删除文件,但不释放存储空间

linux磁盘空间已满,手动rm -rf 删除了大文件之后,df -h 查看一下发现空间占用还是不变,有时候会想rm -rf 删除只是逻辑删除到回收站一样?其实不然,通常这种情况都是文件被删除,但是还被进程占用,因此删除文件空间未释放

通常的建议是kill 掉对应的进程,但是如果是生成环境,不能轻易kill进程的话,可以通过置空文件的方式来释放空间

两种方法:

1.清理进程的FD_NUM

通过lsof | grep deleted 找到未能删除掉的文件,确定占用的进程号
通过 ls -l /proc/PID/fd/* | grep 文件名,找到相应文件句柄
清除文件内容 echo > /proc/PID/fd/FD_NUM

2.置空文件

lsof | grep delete
echo " " >/tmp/acess.log

<think>我们正在讨论如何查看Linux系统文件系统所占存储空间,即文件系统的磁盘使用情况。根据用户提供的引用内容,特别是引用[3]和引用[4],我们可以知道有两个关键命令:`df`和`du`。这两个命令都可以用来查看磁盘空间使用情况,但工作方式同。 用户明确要求查看文件系统存储空间使用情况,这通常指的是整个文件系统的使用情况(如分区或挂载点的使用情况),因此`df`命令是最直接的选择。 ### 一、使用`df`命令查看文件系统存储空间 `df`(disk free)命令用于显示文件系统的磁盘空间使用情况,包括已用空间、可用空间、使用百分比以及挂载点等信息。 #### 1. 基本用法 ```bash df ``` 输出示例: ``` Filesystem 1K-blocks Used Available Use% Mounted on udev 4032204 0 4032204 0% /dev tmpfs 810940 1756 809184 1% /run /dev/sda1 102556312 5242880 91913432 6% / tmpfs 4054688 0 4054688 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 4054688 0 4054688 0% /sys/fs/cgroup /dev/sdb1 961301080 1234567 910000000 1% /data tmpfs 810936 0 810936 0% /run/user/1000 ``` #### 2. 常用参数 - `-h`:以易读格式显示(自动转换单位为K、M、G) ```bash df -h ``` 输出示例: ``` Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 792M 1.8M 790M 1% /run /dev/sda1 98G 5.1G 88G 6% / ... ``` - `-T`:显示文件系统类型 ```bash df -T ``` 输出示例: ``` Filesystem Type 1K-blocks Used Available Use% Mounted on udev devtmpfs 4032204 0 4032204 0% /dev tmpfs tmpfs 810940 1756 809184 1% /run /dev/sda1 ext4 102556312 5242880 91913432 6% / ... ``` - `--total`:在最后添加一行总计 ```bash df -h --total ``` - 指定文件或目录:查看该文件或目录所在文件系统的使用情况 ```bash df -h /home ``` ### 二、使用`du`命令查看目录空间使用 虽然用户询问的是文件系统(即整个分区)的存储空间,但有时我们可能关心某个特定目录占用的空间。这时可以使用`du`(disk usage)命令。 #### 1. 查看当前目录下各子目录大小 ```bash du -h --max-depth=1 ``` #### 2. 查看指定目录总大小 ```bash du -sh /path/to/directory ``` - `-s`:只显示总大小 - `-h`:易读格式 ### 三、`df`与`du`的区别 根据引用[4]: - `df`:通过文件系统获取空间信息,统计的是整个文件系统的空间使用(包括已删除但未释放文件,直到没有进程使用它们才会真正释放)。因此,`df`显示的是文件系统的总体使用情况。 - `du`:通过遍历文件来计算每个文件的大小然后累加,统计的是当前存在的文件的总大小。它会统计已删除但仍有进程占用的文件。 ### 四、实用示例 1. **查看所有文件系统的使用情况(易读格式)**: ```bash df -h ``` 2. **查看根文件系统的使用情况**: ```bash df -h / ``` 3. **查看文件系统类型及使用情况**: ```bash df -Th ``` 4. **查看当前目录下各子目录大小(最大深度1级)**: ```bash du -h --max-depth=1 ``` 5. **查看指定目录(如/home)的总大小**: ```bash du -sh /home ``` ### 五、注意事项 - 如果`df`显示某个分区的使用率达到100%,需要清理空间,可以使用`du`定位大目录。 - 当删除文件后,`df`可能会立即显示空间释放,因为有进程还在使用该文件。此时`du`可能显示出该文件(因为文件已被删除,但空间未释放)。可以通过`lsof | grep deleted`查找被删除但仍被进程占用的文件,然后重启相关进程或服务释放空间。 --- §§ 相关问题 §§ 1. Linux系统中如何清理磁盘空间? 2. `df`和`du`命令显示结果一致的原因是什么? 3. 如何监控Linux系统的磁盘使用情况?</think>### Linux 查看文件系统存储空间使用情况详解 在 Linux 中查看文件系统存储空间使用情况,主要使用 `df` 和 `du` 命令。这两个命令从同角度提供磁盘空间信息: #### 一、`df` 命令(文件系统级别) **功能**:显示**整个文件系统**的磁盘空间使用情况,基于文件系统元数据统计。 **基本用法**: ```bash df -h ``` 输出示例: ``` Filesystem Size Used Avail Use% Mounted on /dev/sda1 98G 24G 69G 26% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sdb1 1.8T 1.2T 521G 70% /data ``` - **-h**:人性化显示(自动转换 GB/MB) - **关键字段**: - `Filesystem`:分区设备 - `Size`:总容量 - `Used`:已用空间 - `Avail`:可用空间 - `Use%`:使用百分比 - `Mounted on`:挂载点 **进阶用法**: 1. 显示文件系统类型: ```bash df -Th # -T 显示文件系统类型 ``` 2. 仅显示特定文件系统(如 ext4): ```bash df -t ext4 -h ``` 3. 显示 inode 使用情况(处理小文件时重要): ```bash df -i # 查看 inode 使用率 ``` #### 二、`du` 命令(目录级别) **功能**:统计**目录/文件**的实际磁盘使用量,通过遍历文件计算。 **基本用法**: ```bash du -sh /path/to/directory ``` - **-s**:显示总计 - **-h**:人性化显示 - 示例输出:`12G /home` **常用场景**: 1. 查看当前目录各子目录大小: ```bash du -h --max-depth=1 ``` 2. 找出大文件(按大小排序): ```bash du -a / | sort -n -r | head -n 10 ``` 3. 排除特定类型文件: ```bash du -h --exclude="*.log" ``` #### 三、`df` 与 `du` 的区别与联系[^3][^4] | 特性 | `df` | `du` | |------------|-------------------------------|-------------------------------| | **统计依据** | 文件系统元数据 | 实际文件遍历 | | **显示内容** | 分区/挂载点整体使用情况 | 目录/文件具体占用空间 | | **删除文件** | 空间立即释放(统计元数据) | 需等待文件真正删除 | | **速度** | 快(直接读元数据) | 慢(需遍历文件) | | **最佳场景** | 查看分区剩余空间 | 定位大文件/目录 | > **关键区别**:当文件删除但仍有进程占用时,`df` 会显示空间已释放(因元数据更新),而 `du` 仍会计入该文件[^4]。 #### 四、实用组合技巧 1. **快速定位磁盘满原因**: ```bash df -h # 找出使用率高的分区 du -sh /* # 查看根目录下各目录大小 du -h --max-depth=1 /var/log # 深入分析具体目录 ``` 2. **监控特定目录**: ```bash watch -n 5 'du -sh /tmp' # 每5秒刷新/tmp目录大小 ``` 3. **图形化工具**: ```bash ncdu # 交互式磁盘分析工具(需安装) ``` #### 五、注意事项 1. **特权要求**: - `df` 普通用户可执行 - `du` 查看目录需要读权限 2. **网络文件系统**: ```bash df -Th //nfs-server/share # 查看NFS空间 ``` 3. **LVM/RAID**: ```bash lsblk -f # 先查看存储架构 df -h # 再分析空间 ``` > 通过 `df` 宏观把握空间分配,结合 `du` 微观定位问题目录,是 Linux 磁盘管理的黄金组合[^1][^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值