【日常运维】pm2起的应用删除应用日志后,发现磁盘控间没有释放,lsof | grep delete 也没看到相关进程,怎么办?

本文主要是介绍【日常运维】pm2起的应用删除应用日志后,发现磁盘控间没有释放,lsof | grep delete 也没看到相关进程,怎么办?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

【日常运维】pm2起的应用删除应用日志后,发现磁盘控间没有释放,lsof | grep delete 也没看到相关进程,怎么办? 

背景: 

我们机器磁盘维护,常见的故障之一:删除数据和日志后,磁盘空间未得到释放,导致空间100%

这一次我们的应用pm2管理的,也遇到了这样的情况,下面是排查过程。

排查思路:

1.检查删除文件是否还存在,是否成功删除

2.有可能文件不在了,但是删除进程还在进行---lsof | grep delete 可以找到相关进程并kill -9 掉即可

3.比较特殊,pm2管理应用的,竟然有产生日志到~/.pm/ 下面,由于在隐藏目录下,在使用命令查看时需要注意。

du -sh /* 和 du -sh / 是用于查看文件或目录大小的命令,它们之间有一些区别。

  • du -sh /*:这个命令会计算并显示根目录下所有一级子目录或文件的大小总和,并以易读的格式(例如 GB、MB)进行显示。/* 表示根目录下的所有一级子目录或文件,但不包括隐藏文件或目录(以.开头的文件或目录)。

  • du -sh /:这个命令会计算并显示整个文件系统根目录的大小总和,并以易读的格式进行显示。/ 表示整个文件系统根目录,包括根目录下的所有文件、目录以及隐藏文件或目录。

因此,区别在于 du -sh /* 只计算根目录下的一级子目录或文件的大小总和,而 du -sh / 则计算整个文件系统根目录的大小总和,包括所有文件和目录。

这里笔者也被 du -sh /* 这个命令坑了,/* 不包含隐藏目录,需要去掉*。才显示~/.pm2/下面的日志,清理即可。

在这里才提一下关于磁盘的,还有一种情况是 磁盘空间显示还有,但是inode已经用完了,

这是为什么呢?---》答案是系统出现过多小文件,把inode都占用了。

这个时候需要遍历 一个一个删除小文件即可。此时无法使用rm -f 去删除多小文件的目录

 如果直接删除rm -rf xxx基本上是行不通的,会报Argument  list  too  lng  问题,就是删除的文件太多了。

找到对应目录进行遍历删除:

 #删除7天前的所有数据

 find . -ctime +7 -name "*" | xargs -i rm -rf  {}

这篇关于【日常运维】pm2起的应用删除应用日志后,发现磁盘控间没有释放,lsof | grep delete 也没看到相关进程,怎么办?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973558

相关文章

关于新版adt22.6.0的相关问题(自己总结)

首先说自己手贱的很,一不小心就更新了adt,导致现在各种问题频出。在网上找到了解决方案  在百度经验《 关于新版ADT创建项目时出现appcompat_v7的问题》!!!这个教程会告诉我们把appcompat_v7作为一个库项目,只有它点击 isLibrary,而你的项目千万不要点击islibrary,否则会在导出的时候出现There is no android project named xx

总结:LayoutInflater和inflate()区别与联系 应用

首先说明的是LayoutInflater和inflate()这两个东东的区别,LayoutInflater是一个公共的抽象类,由object继承而来,而inflate()是LayoutInflater类的类方法,这一定要弄清楚概念,否则你会晕头转向。然后说这个东东的作用,我们先看看Google的综述: Instantiates a layout XML file into its corres

Linux删除大文件rm -rf的问题

请几天,我删除系统汇总的大文件,大约100G左右,当我使用rm -rf  xxxx.log删除后,使用df -h发现空间并未释放。 一开始以为是由于磁盘虚拟挂载,导致我删除的文件并不是当前目录的文件。但后来发现并不是。 我在网络上搜索发现都是  要: lsof | grep delete kill -9 xxx 但是我觉得这样不安全。 比如文件被进程锁定,或者有进程一直在向这个文件写数

iOS逆向 实时查看手机日志

一、第一种方法:使用tail命令查看 用SSH 连接手机之后,可以使用tail 命令查看越狱手机的实时日志。但是tail不能直接使用,需要先在手机上装两个插件。 1、在Cydia搜索“syslogd to/var/log/syslog”并安装; 2、在Cydia搜索“Core Utilities”并安装; 比如查看微信的日志: yuancande-iPhone:~ root# tail

Spring Boot构建应用开发规范

1.规范的意义和作用 •编码规范可以最大限度的提高团队开发的合作效率 •编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护 •编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码 •规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维 2.代码仓库规范 2.1公共组件 •公共组件通常指

JAVA的日志体系

一.前言 目前的日志框架有 jdk 自带的 logging,log4j1、log4j2、logback ,这些框架都自己定制了日志 API ,并且有相应的实现;目前用于实现日志统一的框架 Apache commons-logging、slf4j ,遵循「面向接口编程」的原则,这两大框架可以让用户在程序运行期间去选择具体的日志实现系统(log4j1\log4j2\logback等)来记录日志,是统

【应用机器学习】评估一个假设

检验是否过拟合 将数据分成训练集和测试集 通常用70%的数据作为训练集,用剩下30%的数据作为测试集。 很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行洗牌,然后再分成训练集和测试集。 使用训练集对模型进行训练 可以得到一系列参数 theta 使用测试集对模型进行测试 使用测试集数据对模型进行测试,有两种方式计算误差 线性回归模型 利用测试集数据计算代

gradle相关网站以及几个常用网站

查看插件版本:https://jcenter.bintray.com/com/android/tools/build/gradle/ gradle下载:http://services.gradle.org/distributions/ github android:https://github.com/android codekk http://www.andr

代码随想录算法训练营第五十五天| 583. 两个字符串的删除操作 ,72. 编辑距离

目录 题目链接: 583. 两个字符串的删除操作 思路 代码 题目链接: 72. 编辑距离 思路 代码 总结 题目链接:583. 两个字符串的删除操作 思路         ①dp数组,dp[i][j]表示下标以i-1结尾的word1和下标以j-1结尾的word2若要相等,所需删除元素的最小次数         ②递归公式,当word1[i-1] == word2

Android进程通信之Messenger小试

趁热再打一块儿铁--Messenger。 Messenger作为Android中的一种跨进程传递消息的机制存在。这里记录一下简单的使用。总体思想是拿到哪个进程的Messenger,就可以向那个进程传递消息。 第一步:如果我们要向服务端传递消息,那么就要在服务端创建Messenger,然后将其Binder在onBind方法中返回,以便Client部分可以通过这个binder创建一个服务端的Mes