linux删除文件后没有释放空间

2023-10-26

系统:centos 7

现象:早上收到阿里云短信,发现一台服务器的磁盘空间使用率达到90,昨天晚上已经加了定时任务,难道没有啥用,无奈的我打开电脑

解决:(由于已经解决,当时没有截图)

  1. 查看磁盘空间

    df -h

  2. 找到对应文件,进行删除

    rm $filename -rf

  3. 再次产看空间磁盘使用率并没有下降,郁闷,再次查找,并没有大文件所在了

    du -h –max-depth=1 /data

网上查找未释放磁盘空间原因:

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是tomcat的log文件,删除的时候文件应该正在被使用

解决方法:

通过一下命令获得一个已经被删除但是仍然被应用程序占用的文件列表

lsof |grep deleted

可以看到刚才刚才删除的log还在使用,未被释放空间

怎么处理:

  1. kill 掉相关进程(我就是这样解决的。。。。)
  2. 停掉使用这个文件的应用,让os自动回收磁盘空间

当linux打开一个文件的时候,Linux内核会为每一个进程在/proc/ 『/proc/nnnn/fd/目录(nnnn为pid)』建立一个以其pid
为名的目录用来保存进程的相关信息,而其子目录fd保存的是该进程打开的所有文件的fd(fd:file descriptor)。

kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。
这是一项高级技术,仅到管理员确定不会对运行中的进程造成影响时使用。应用程序对这种方
式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题
所以理论上使用第二种方法好点

后续:
在为采用rm删除命令之前,其实还有个命令可以释放空间,就是清空日志

cat /dev/null > /data/apache-tomcat-8.0.41/logs/fileName.log

于是改了一下定时任务(crontab -e),执行脚本清除log

#!/bin/bash

path=/data/apache-tomcat-8.0.41/logs
files=$(ls $path)
for filename in $files
do
   cat /dev/null > $path/$filename
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux删除文件后没有释放空间 的相关文章

  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 伊迪德信息

    重新定义问题 有什么方法可以获取所连接显示器的序列号吗 我想收集显示器的Eid信息 当我使用 logverbose 选项运行 X 时 我可以从 xorg 0 log 文件中获取它 但问题是 如果我切换显示器 拔出当前显示器 然后插入另一个显
  • Linux 中热插拔设备时检测设备是否存在

    我正在运行 SPIcode http lxr free electrons com source drivers spi spi omap2 mcspi c在熊猫板上 我想知道其中的哪个功能code http lxr free electr
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1

随机推荐

  • 【Linux】用fdisk进行磁盘分区(图文过程)

    目录 0 环境 1 思路概述 2 详细介绍 2 1查看磁盘现有分区 fdisk l 2 2对分区设置具体参数 0 环境 linux 新版整理于2023 6 29 内容未变 增加了思路概述部分 排版看起来比以前好些 1 思路概述 1 查看磁盘
  • 财务数据分析?奥威BI数据可视化工具很擅长

    BI数据可视化工具通常是可以用户各行各业 用于不同主题的数据可视化分析 但面对财务数据分析这块难啃的骨头 能够好好地完成的 还真不多 接下来要介绍的这款BI数据可视化工具不仅拥有内存行列计算模型这样的智能财务指标计算功能 还拥有一套标准化
  • spark报错OutOfMemory

    最近在使用spark进行分析的时候 几千万的数据量感觉不多 但是跑起来非常慢 内存溢出OutOfMemory 1 然后在有使用map的地方 在map之前进行分区repartition 2 join会有shuffle产生 shuffle也会产
  • java-PDF读取一页某一区域内容

    首先还是我的风格 先看效果 在某一页pdf中获取某一块区域的内容和图片 这样就能获取想要的东西了 上代码 这里需要注意maven 是两部分
  • 电路交换,报文交换和分组交换的原理、区别、优缺点

    电路交换 电路交换技术是在通信两端设备间 通过一个一个交换设备中线路的连接 实际建立了一条专用的物理线路 在该连接被拆除前 这两端的设备单独占用该线路进行数据传输 电话系统就是采用了线路交换技术 通过一个一个交换机中的输入线与输出线的物理连
  • word2003脚注问题

    问题分析 在题目上插入脚注的时候 脚注放在文件结尾 然后正文拆开了 不能续前节 解决办法 word2003中 工具 gt 选项 gt 兼容性
  • Java中的byte详解

    Java中的byte详解 介绍 byte 即字节 由8位的二进制组成 在Java中 byte类型的数据是8位带符号的二进制数 在计算机中 8位带符号二进制数的取值范围是 128 127 所以在Java中 byte类型的取值范围也是 128
  • OpenGL 红宝书 反走样 雾 点参数 多边形偏移

    6 2 反走样 void glHint GLenum target GLenum hint 控制OpenGL的某些行为 参数target是要控制的行为 参数hint可以是GL FASTEST GL NICEST GL DONT CARE 效
  • 组成原理---中断

    文章目录 中断的基本概念 中断请求与判优 中断响应 中断服务与返回 中断系统是计算机中实现中断功能的软 硬件总称 一般在 CPU 中配置中断机构 在外设接口中配置中断控制器 在软件上设计相应的中断初始化程序和中断服务程序 中断的基本概念 在
  • python从入门到精通 第一节 数据类型

    Python 中的变量不需要声明 每个变量在使用前都必须赋值 变量赋值以后该变量才会被创建 在 Python 中 变量就是变量 它没有类型 我们所说的 类型 是变量所指的内存中对象的类型 等号 用来给变量赋值 等号 运算符左边是一个变量名
  • 分布式锁的实现与应用

    为什么需要锁 在多任务环境下解决并发场景的数据竞争问题 Java常见锁 我们可以根据锁是否包含某一特性来进行分组归类 从线程是否对资源加锁 可以将锁分为乐观锁和悲观锁 从资源已被锁定时 线程是否阻塞 可以分为自旋锁 JUC下的atomic家
  • react实现计数器

    var In display gt div display div var Btn click gt
  • 同页面javascript中文参数传递

    修改前
  • VMware Workstation 14 Pro 安装 Windows Server 2003(完)

    一 下载镜像文件 Windows Server 2003有多种版本 每种都适合不同的商业需求 Windows Server 2003 Web Edition WindowsServer2003Web版 用于构建和存放Web应用程序 网页和X
  • Python入门的20个基础练习

    01 Hello World python的语法逻辑完全靠缩进 建议缩进4个空格 如果是顶级代码 那么必须顶格书写 哪怕只有一个空格也会有语法错误 下面示例中 满足if条件要输出两行内容 这两行内容必须都缩进 而且具有相同的缩进级别 pri
  • sqli - labs - Less 17

    我们先来看看源码 这里我们可以看到 首先进行上传数据的判断 但是 uname是通过上面的check input函数进行相关过滤所以用户名必须要正确 密码可以忽略 所以本关在密码这里找到突破口 可以看出在得到row变量之后 如果不为空 代码将
  • STM32跳至硬件错误中断(HardFault_Handle)

    1 遇到错误问题是数据类型不对 导致该步骤永远不能执行到 跳至硬件错误中断 所以硬件中断可尝试查找数据类型错误 2 堆栈设置错误也会跳至hardwarefault 3 如果上电后 在调试时 执行单步 会在不确定位置的地方产生HardFaul
  • 基于OpenCV的手势识别完整项目(Python3.7)

    这是我的本科毕设题目 刚开始接触机器学习这方面 感谢CSDN和GitHub上的大佬 网上类似项目很多 方法也有很多 自己顺带进行了整理 边做毕设边分享一下自己学习心得吧 也算是梳理一下所学知识 各大佬有什么好的建议还请指出 不吝赐教 项目简
  • Qt的槽函数崩溃问题

    当Qt的槽函数是一个lambda表达式时 如果传入的方法为引用传递 而你又在lambda表达式里使用了外面定义的stl或类 那么就会崩溃 这是因为Qt的槽函数是一个轮询的过程 第一次你进入这个表达式结束时会进行一次自动析构 第二次进入这个l
  • linux删除文件后没有释放空间

    系统 centos 7 现象 早上收到阿里云短信 发现一台服务器的磁盘空间使用率达到90 昨天晚上已经加了定时任务 难道没有啥用 无奈的我打开电脑 解决 由于已经解决 当时没有截图 查看磁盘空间 df h 找到对应文件 进行删除 rm fi