[Linux]日志文件已删掉磁盘空间不释放,不重启服务进程的解决方法

这篇具有很好参考价值的文章主要介绍了[Linux]日志文件已删掉磁盘空间不释放,不重启服务进程的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[Linux]日志文件已删掉磁盘空间不释放,不重启服务进程的解决方法

问题背景

服务进程启动后,后台会有写日志的操作,当服务进程还没停掉,日志就会一直在写,这时候手动删除日志,会造成日志在linux该目录下已经删除,但是磁盘空间不会被释放掉,因为写日志的进程还在,所以这个磁盘的使用率还是会不断上升,当日志刷新的特别快更新体量特别大的时候,严重的就会造成系统其他服务异常和宕机,这种情况通常重启服务就会解决和释放磁盘空间,但是在真正的生产环境,重启服务是要按严格的时间窗口标准来执行的。为了避免出现磁盘空间不断激增的导致爆满的问题,又不能影响正在运行的服务,本文提供解决方法,在不重启服务进程的时候,释放磁盘空间,同时给出日志清理的时候的操作建议。

问题分析

1、日志文件已删掉但是空间没被释放,原因是后台进程还在运行

ps -ef | grep "进程名"

会看到当前进程还存在。
2、查看文件系统的磁盘使用空间,会发现日志文件所在的磁盘目录的使用率会稳定上升

df -h

证明文件虽然已经删掉,但是后台进程还在不断写日志。

问题解决

1、进入root用户,或者使用root用户的linux窗口

su - root

2、进入linux的进程目录。linux本身是个文件系统,这个目录包含了linux所有的进程的信息,有进程的启动目录,进程操作的软连接等

cd /proc/

3、根据上面ps -ef显示的进程号,进入/proc/进程号/fd 目录

cd /proc/进程号/fd

4、确认已经进入进程的fd目录

pwd

截图如下:
日志删除未释放空间,技术分享,linux,文件清理,linux,服务器,运维
5、该进程的fd目录下会有该进程写日志的软连接,可以查看该软连接的链接名,其中wlproxy是删掉的日志名缩写

ls -al | grep wlproxy

结果如下图,会出现一个包含(deleted)结尾的软连接,意思是这个文件已经删掉了,但是写这个文件的软连接还存在,进程也还存在,此时软连接的名字是799,路径是在/proc/进程号/fd 目录下。
日志删除未释放空间,技术分享,linux,文件清理,linux,服务器,运维
6、这时候如果需要释放磁盘空间,可以选择清空该软连接,因为软连接会定向到这个linux底层的文件

echo "" > 799

如果文件表较大的话稍等片刻,该日志文件就会在不重启的前提下清理干净
7、此时再检查磁盘使用率df -h,就回发现磁盘空间已经降下来,这时候还要检查一下服务是否还在正常运行,因为最初就是为了不影响服务运行才会不重启进行误删后的日志清理操作。

问题复盘和问题避免

之所以要选择复杂的方式清理日志文件,是因为运维人员在清理日志文件的时候直接选择了删除的方式,但是服务进程是一直在线上运行的,这是忽略了根本的可观因素,日志文件等于没有删成功,还占用了大量的磁盘空间。规避这种问题的方法是:清理过期日志时,使用echo “” > xxxx.log的方式清空掉文件,而不是直接rm掉该文件,因为就算多一点文件名在该日志目录也不会有太大问题,但是磁盘空间不会因为日志文件被rm而被释放掉,反而会造成更大的问题

问题延伸

查看更多的这种被删除的空间还没被释放掉的日志文件。也可以用root用户遍历/proc目录,不过root操作需要谨慎,建议所有操作都在测试环境或者测试机器测试验证过没问题后再来执行(以上以下都是)。重定向输出ls -R的查询结果到一个有可观磁盘空间的目录的txt,然后vi编辑txt后查找包含(deleted)结尾的结果,

ls -R -al /proc > /data/t1.txt 

再根据实际情况分析和斟酌需不要清空释放这些被删掉的文件所占用的空间文章来源地址https://www.toymoban.com/news/detail-648095.html

创作不易,且看且珍惜,如果该文章给您带来了帮助,请麻烦您点一下关注,各位看官的支持,是本人持续创作最好最大的动力!

到了这里,关于[Linux]日志文件已删掉磁盘空间不释放,不重启服务进程的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 清理磁盘空间&使用du指令排查服务器磁盘占用过大的文件

    命令:df -h 参数说明: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以KB的容器显示各文件系统 -m:以MB的容量显示各文件系统 -h:以人们较易阅读的GB,MB,KB等格式自行显示 -H:以 M=1000K代替M=1024K的进位方式 -T:连同该分区的文件系统名称(例如ext3)也列出

    2024年02月06日
    浏览(53)
  • MySQL delete删除数据后,释放磁盘空间

    当 MySQL 数据库服务删除部分数据后;有些情况下这些数据占用的存储空间会释放掉,有些情况这些存储空间则不会释放。以下是对这种情况的简单说明: 当执行 删除数据表 或者 清空数据表 的全部数据操作时,都 会释放掉 相应的 磁盘存储空间 。 在MyISAM和InnoDB(innodb_file_

    2024年02月12日
    浏览(42)
  • MySQL Delete 表数据后,磁盘空间并未释放,为什么?

    有开发小哥咨询了一个问题,记录一下处理过程分享给有需要的朋友。 问题如下: MySQL数据库中有几张表增删比较频繁、数据变动剧烈且数据量大,导致数据增长过快,磁盘占用多。为了节约成本,定期进行数据备份,并通过delete删除表记录,但是执行delete操作后发现磁盘空

    2024年02月06日
    浏览(58)
  • 如何清除 Pip 缓存?从而优化 Python 环境并释放磁盘空间

    在 Python 开发中,Pip 是最常用的包管理工具之一,它用于安装、升级和管理 Python 包。然而,随着时间的推移,Pip 可能会积累大量的缓存文件,占用磁盘空间并可能导致一些问题。因此,定期清除 Pip 缓存是一个好习惯。本文将详细介绍如何清除 Pip 缓存,帮助您优化 Python 环

    2024年02月11日
    浏览(44)
  • Docker系列---【mysql容器手动停止后,重启服务器,mysql容器被删掉了,如何恢复mysql数据?】...

    为了快速搭建数据库,我使用了docker搭建数据库,由于服务器资源紧张,我想先把mysql容器停掉,启动jenkins容器,使用完之后再停掉jenkins,启动mysql,结果由于服务器资源有限,服务器卡死了,无法远程连接了,没办法,我只能登录运营商的云平台管理平台,强制重启服务器

    2024年02月08日
    浏览(47)
  • Linux磁盘空间与文件大小查看命令详解

            在Linux系统中,有多个命令可以用来查看磁盘空间的使用情况。最常用的命令是 df (disk free)。 df 命令的 -h 选项以人类可读的方式显示磁盘空间,该命令将显示文件系统的使用情况、剩余空间等信息。         为了查看特定文件夹的大小,我们可以使用 du (

    2024年01月20日
    浏览(63)
  • 【网络教程】如何解决Docker删除镜像和容器后磁盘空间未释放的问题

    当删除Docker镜像和容器后,磁盘空间并未释放,这可能导致磁盘空间不足。造成此问题的原因包括: Docker镜像和容器的删除策略:默认情况下,Docker不会立即删除镜像和容器,而是将它们保留30天。 联合文件系统(UnionFS)的特性:联合文件系统是Docker镜像的基础,它允许在

    2024年02月09日
    浏览(47)
  • Linux CentOS 服务器清理磁盘空间

    首先根目录下使用[df -ah]命令查询磁盘空间占用情况。 发现[/根目录]下面磁盘占用100% 进入根目录,查询大文件与目录 查看GB以上文件夹目录并且排序,可以使用以下命令: 然后不断执行上面的过程,进入大文件目录,定位到大文件 我这里最终找到是Tomcat下面logs日志占据了20多

    2024年02月05日
    浏览(71)
  • Linux磁盘空间占满,但搜不到大文件

    使用 df -h 查看磁盘空间 使用 du -sh * 查看每个目录的大小 经过查看没有发现任何大的文件夹。 继续下面的步骤 如果您的Linux磁盘已满,但是通过 du -sh 找不到大文件,可能是因为有一些进程正在写入磁盘,但是这些文件已经被删除,但是进程仍然在使用它们。这种情况下,可

    2024年02月16日
    浏览(42)
  • 【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题

    很多同学拉取镜像使用一段时间后发现 C 盘快满了,把之前用过的镜像和容器删除,发现 WSL 挂载目录的虚拟磁盘大小没有变化,非常的奇怪。 其实,不同于 WSL1, WSL2 本质上是虚拟机 ,所以 Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储。这个 vhdx 后缀的虚拟磁盘文件

    2024年02月16日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包