概述

在近期的实际工作中,遇到过几次因为磁盘空间满而导致服务不可用的情况,所以免不了要对系统进行清理。 在最开始的几次清理过程中,通过删除一些大日志文件可以得到立竿见影的效果,所以就没怎么注意;但是在最近一次的清理过程中,发现根目录的使用率已经到达百分百,但是并没有在根目录下发现有什么大文件,所以无法仅通过rm -rf ***这种简单粗暴的方式来解决问题。

问题分析

问题描述

说起被删除文件的磁盘空间并未释放问题,还存在一个与之类似的说法:df、du结果不一致,这两个问题在很大程度上指的是一回事:即就是被删除文件在被执行rm命令时,还有其他进程在操作该文件;所以该文件只是被标记为“deleted”,而非立马被删除;除非等到操作该文件的所有进程都结束后该文件才会被删除。

实践

俗话说好记性不如赖笔头,既然知道了原因,那就亲自实践一下,在验证结论正确与否的同时加深记忆也未尝不可。
首先执行命令df -h,可以看到当前机器的根目录的大小为48G,可用空间为35G;

然后在当前用户目录(/home/yhyr)下新建一个数据文件,为了提升试验的效果,这里生成文件的大小为1G;数据文件生成 命令dd if=/dev/zero of=./data_file bs=1M count=1024;然后分别查看当前目录的文件大小信息du -sh ./*和磁盘的占用情况df -h


可以看到此时相较于之前35G的可用空间,现在已经少了一个G,符合我们的预期。接下来分别验证一下有无进程操作下,删除数据文件后磁盘空间的使用情况:

场景一:当没有任何进程操作该数据文件时,执行rm -f data_file后磁盘空间成功释放了1G的空间,执行结果如下所示:

场景二:首先通过tail data_file &模拟操作该数据文件,然后删除该文件并查看磁盘空间的释放情况:

这样就可以复现磁盘空间未释放的情况;然后通过lsof | grep data_file查看文件的占用信息:

通过lsof命令可以看到该文件被tail进程所占用,对应的进程PID为92489,文件的路径即就是当初删除前文件的实际路径,只是目前被标记为deleted;现在通过kill -9 PID命令杀死tail进程后,磁盘空间信息如下所示:

到这有关如何解决因为进程占用而导致磁盘空间无法释放的问题应该都已有所了解;因为这个问题看起没什么难度,网上有关此问题的描述也要很多,在这里就不做过多的赘述。接下来基于此次问题的发现和实践解决过程,更进一步的了解一些有关系统监控基本系统监控命令、进程命令,来提升问题的排查和定位能力。

du & df

du(disk usage)

面向文件的命令;通过计算文件的大小来统计指定目录磁盘的使用情况;通俗的讲就是计算文件具体的占用空间

常用命令

du -sh 统计当前目录的总大小
du -sh ./* 查看当前目录下各文件(文件夹)的大小,不统计隐藏文件(夹)
du -h --max-depth=1 查看当前目录下各文件(夹)的大小【囊括隐藏文件(夹)】;等价于du -h -d 1

df(disk free)

面向文件系统的命令;通过文件系统获取分区信息;Eg:分区大小、使用量、剩余量、使用率
常用命令

df -h

lsof

lsof(list open file),列出打开文件;

Process & PID & Port

PID查看对应的进程信息

方案一:通过ps命令查看

ps -aux | grep pid

方案二:进入进程目录查看

# Step 1
cd /proc/pid
# Step 2
ls -lt
# cwd表示进程所在的目录;exe表示进程类型

查看端口占用

方案一:lsof -i:PID

方案二:netstat -nlp | grep PID

Linux文件描述符

Linux磁盘空间释放相关推荐

  1. Linux 磁盘空间释放问题

    问题说明 IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件.但是发现删除该文件后,/分区的磁盘空间压根没有释放 ...

  2. linux磁盘空间df-h出不出来,linux 故障:df -h统计磁盘空间占用太多,但又du -h找不到大的文件...

    用lsof / | grep -i delete 从根目录定位打开的被删除的文件 如果定位到某文件占用空间很大 主要是因为我们在删除这个日志文件的时候是用rm -rf *.log这样的命令删除的,删除 ...

  3. linux磁盘扩空间,Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  4. 使用硬盘空间少的linux系统,linux磁盘空间不足的解决办法

    一些linux系统电脑用户在使用一些应用程序的时候,会被提醒:磁盘空间不足的问题,因此,就有网友想知道:linux查看磁盘空间的方法,以及linux磁盘空间不足的原因和解决方法.下面,就一起来看看今天 ...

  5. linux 日志文件被占用下不来怎么办,linux 磁盘空间被占满但找不到目标文件的问题处理 lsof命令...

    lsof简介 在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能. 直接输入lsof部分输出为: 每行 ...

  6. linux 磁盘满了 预警,Linux磁盘空间满了的排查与解决思路

    block正常满 (磁盘实际不足) inode 满 大量的小文件 block 满 文件没有被彻底删除(硬链接数0 进程调用数不为0) 解放方法: 1 查看df -h 磁盘使用量根据占用量大小逐步逐步排 ...

  7. vm虚拟机linux磁盘空间不足,手动扩大

    vm虚拟机linux磁盘空间不足,手动扩大 随着Linux虚拟机的不断使用,在VMware中经常遇到 预先装好的 linux 虚拟机的硬盘空间过小 的问题,造成很多软件不能安装, 而重新装一个,又挺麻 ...

  8. linux磁盘空间不足,但是使用df却发现磁盘空间至少有一半的空间没有使用

    linux磁盘空间不足,但是使用df -ah却看到还有近一半的空间,怎么会报磁盘空间不足呢? 其实很简单,因为node节点已经用完了,一个文件对应一个node节点,我们这里的说的空间其实是block, ...

  9. oracle指令df,怎么使用df命令查看Linux磁盘空间?

    查看Linux磁盘空间的工具有很多,那么怎么使用命令来查看磁盘空间呢?那就要用到df命令了,下面小编给大家介绍下使用df命令查看Linux磁盘空间的方法. [root@localhost ~]# df ...

最新文章

  1. gitlab服务器邮箱配置
  2. IDL关系运算符Eq Ne Le Lt Gt Ge含义说明
  3. Winform中设置ZedGraph鼠标悬浮显示线上的点的坐标并自定义显示的内容
  4. Android基础——项目的文件结构(三)
  5. Linux ffmpeg的安装编译过程
  6. Java构建工具:Ant vs. Maven vs Gradle
  7. url_regex和urlpath _regex区别
  8. [Lydsy1805月赛]对称数 BZOJ5361
  9. struts教程笔记2
  10. 习题9.38 查找字符串中的数字、字母
  11. 思科模拟配置文件服务器,思科模拟服务器配置教程
  12. CSS3实现折角效果
  13. 为什么女程序员很孤独?
  14. 半透明旋转魔方特效的实现
  15. 【论文笔记】Hierarchical Paired Channel Fusion Network for Street Scene Change Detection
  16. Android 圆形头像实现
  17. 【李佳辉_周报_2022.9.25】
  18. anthony1314的小笔记
  19. 大数据批量下载文件 代码
  20. ​儿童手表APP开发让用户更好地体验到智能设备的便捷性​

热门文章

  1. 智能内容安全平台的运营维护与分享
  2. java中rank函数_SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  3. [流畅的Python][8][对象引用、可变性和垃圾回收]
  4. 控制算法--1 二值位式控制算法
  5. 脚本---perl与python的比较
  6. 你的眼中满是“变量”,可“变量”眼中是无相(Python)(Java与Python学习通法)
  7. Win10 C盘爆红找出edb文件146G,删除后又出现如何解决
  8. 利用模式进行构建第八讲——近似值模式
  9. java计算机毕业设计某山区环境保护监督管理平台源程序+mysql+系统+lw文档+远程调试
  10. kafka问题 Aattempt to heart beat failed since the group is rebalancing