当前位置: 首页 > news >正文

Linux磁盘空间不足,12个详细的排查方法

在Linux系统运维过程中,磁盘空间不足是一个常见且棘手的问题。当磁盘空间被占满时,系统的正常运行会受到影响,甚至可能导致服务中断。因此,迅速有效地排查和解决磁盘空间问题显得尤为重要。本文将详细介绍16个排查Linux磁盘空间问题的详细方法,帮助运维人员快速定位问题并解决。

1:使用df命令查看磁盘使用情况

df命令是Linux系统中用于查看文件系统磁盘空间使用情况的工具。通过运行以下命令,可以查看各个挂载点的磁盘使用情况:

df -h

该命令会以易读的格式(如GB、MB等)显示每个挂载点的总空间、已用空间、可用空间和挂载点等信息。通过此命令,可以快速定位哪个挂载点的空间使用率较高。

2:使用du命令查找大文件或目录

如果通过df命令发现某个挂载点的空间使用率较高,接下来可以使用du命令来查找该挂载点下占用空间较大的文件或目录。以下是一些常用的du命令示例:

• 查看当前目录下每个子目录的磁盘使用情况:

du -sh *

• 递归查看当前目录及其子目录下的磁盘使用情况,并只显示前N层目录的总大小:

du -h --max-depth=N

• 查找并排序显示当前目录及其子目录下占用空间最大的前N个文件或目录:

du -ah . | sort -rh | head -n N
3:检查隐藏文件和目录

有时,一些隐藏文件或目录(以.开头的文件或目录)可能会占用大量磁盘空间。可以通过以下命令来查找隐藏文件或目录的大小:

du -sh .[!.]*

该命令会显示当前目录下所有隐藏文件或目录的大小。

4:检查系统日志文件

系统日志文件是记录系统运行时产生的各种信息的文件,如/var/log目录下的各种日志文件。这些日志文件可能会随着时间的推移而不断增长,占用大量磁盘空间。可以通过以下命令查看这些日志文件的大小:

du -sh /var/log/*

如果发现某个日志文件特别大,可以考虑对其进行压缩、轮转或清理。

5:清空文件内容以释放空间

对于找到的每个被删除但仍然占用空间的文件,您可以通过将其内容清空来释放空间。这可以通过
重定向空内容到文件描述符来实现,例如:

echo >/proc/PID/fd/FD_NUM

其中PID是进程的ID,FD_NUM是文件描述符的数字;这个操作不会删除文件,而是将文档内容清空的方法释放空间,文件仍存在。

6:检查用户主目录

用户主目录下的个人文件可能会占用大量磁盘空间。可以通过以下命令查看每个用户主目录的大小:

du -sh /home/*

如果发现某个用户的主目录特别大,可以进一步查看该用户目录下的文件大小,并与其沟通进行清理。

7:检查Docker容器和镜像

如果系统中运行了Docker容器,那么Docker镜像和容器文件系统也可能会占用大量磁盘空间。可以通过以下命令查看Docker镜像和容器的大小:

docker system df

对于不再需要的镜像或容器,可以进行删除以释放空间。

8:检查未释放的磁盘空间

有时,即使删除了大量文件,磁盘空间可能仍然没有释放。这可能是因为被删除的文件仍然被某些进程占用。可以通过以下命令查找被占用的已删除文件:

lsof | grep deleted

如果找到了被占用的已删除文件,可以尝试重启占用这些文件的进程以释放空间。

9:检查文件系统错误

最后,如果以上方法都无法解决问题,可能需要检查文件系统是否存在错误。可以使用fsck命令来检查和修复文件系统错误。但请注意,在运行fsck命令之前,必须卸载文件系统或在单用户模式下运行该命令。

umount /dev/sdXN
fsck /dev/sdXN

其中,/dev/sdXN是要检查的文件系统对应的设备文件。

当然,除了上述十种方法外,还有一些额外的步骤和工具可以帮助进一步排查和解决Linux磁盘空间问题。以下是几个额外的补充方法:

10:检查并清理软件包缓存

在Linux系统中,安装和更新软件包时,系统会缓存下载的软件包文件。随着时间的推移,这些缓存文件可能会占用大量磁盘空间。对于基于Debian的系统(如Ubuntu),可以使用以下命令清理APT缓存:

sudo apt-get clean

对于基于RPM的系统(如CentOS、Fedora),可以使用以下命令清理YUM缓存:

sudo yum clean all
11:检查并清理内核模块

在Linux系统中,随着内核的更新,旧的内核模块可能会被保留下来,占用磁盘空间。可以使用以下命令列出所有安装的内核,并手动删除不再需要的旧内核:

dpkg --list | grep linux-image

(对于基于Debian的系统)或

rpm -qa | grep kernel

(对于基于RPM的系统)

然后,可以使用相应的包管理工具(如dpkg -rrpm -e)来卸载不再需要的内核包。

12:使用磁盘使用分析工具

除了手动使用dfdu命令外,还可以使用一些磁盘使用分析工具来更直观地查看磁盘使用情况。例如,ncdu是一个基于ncurses的磁盘使用分析工具,可以提供交互式界面来浏览和删除文件。

sudo apt-get install ncdu  # 对于基于Debian的系统
sudo yum install ncdu      # 对于基于RPM的系统
sudo ncdu /

相关文章:

Linux磁盘空间不足,12个详细的排查方法

在Linux系统运维过程中,磁盘空间不足是一个常见且棘手的问题。当磁盘空间被占满时,系统的正常运行会受到影响,甚至可能导致服务中断。因此,迅速有效地排查和解决磁盘空间问题显得尤为重要。本文将详细介绍16个排查Linux磁盘空间问…...

Spring Web MVC综合案例

承接上篇文章——Spring Web MVC探秘,在了解Spring Web MVC背后的工作机制之后,我们接下来通过三个实战项目,来进一步巩固一下前面的知识。 一、计算器 效果展示:访问路径:http://127.0.0.1:8080/calc.html 前端代码&a…...

微软预测 AI 2025,AI Agents 重塑工作形式

1月初,微软在官网发布了2025年6大AI预测,分别是:AI模型将变得更加强大和有用、AI Agents将彻底改变工作方式、AI伴侣将支持日常生活、AI资源的利用将更高效、测试与定制是开发AI的关键以及AI将加速科学研究突破。 值得一提的是,微…...

lvgl性能调优

LV_USE_PERFORMANCE lvgl_performance 是 LVGL 提供的性能分析工具,可以帮助开发者评估和优化图形库的性能。在一些特定的版本中,lvgl_performance 是一个宏或者工具,用来分析性能瓶颈,特别是图形渲染的效率。 下面是如何使用 l…...

CSS实现实现票据效果 mask与切图方式

一、“切图”的局限性 传统的“切图”简单暴力,但往往缺少适应性。 适应性一般有两种,一是尺寸自适应,二是颜色可以自定义。 举个例子,有这样一个优惠券样式 关于这类样式实现技巧,之前在这篇文章中有详细介绍: CSS 实现优惠券的技巧 不过这里略微不一样的地方是,两个…...

STL--list(双向链表)

目录 一、list 对象创建 1、默认构造函数 2、初始化列表 3、迭代器 4、全0初始化 5、全值初始化 6、拷贝构造函数 二、list 赋值操作 1、赋值 2、assign(迭代器1,迭代器2) 3、assign(初始化列表) 4、assig…...

ZooKeeper 中的 ZAB 一致性协议与 Zookeeper 设计目的、使用场景、相关概念(数据模型、myid、事务 ID、版本、监听器、ACL、角色)

参考Zookeeper 介绍——设计目的、使用场景、相关概念(数据模型、myid、事务 ID、版本、监听器、ACL、角色) ZooKeeper 设计目的、特性、使用场景 ZooKeeper 的四个设计目标ZooKeeper 可以保证如下分布式一致性特性ZooKeeper 是一个典型的分布式数据一致…...

“深入浅出”系列之C++:(11)推荐一些C++的开源项目

1. SQLiteCpp - 简单易用的Sqlite C封装库 仓库地址:https://github.com/SRombauts/SQLiteCpp 简介:SQLiteCpp是一个对Sqlite数据库进行C封装的开源库,代码行数约2,500行。它提供了简洁易用的接口,使得在C项目中操作Sqlite数据库…...

《重生到现代之从零开始的C++生活》—— 类和对象2

类的默认成员函数 默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数,一个类会默认生成6个成员函数 构造函数 构造函数时特殊的成员函数,构造函数的初始化对象 函数名与类名相同 没有返回值 对象实例化的时候胡自动调用构造…...

“UniApp的音频播放——点击视频进入空白+解决视频播放器切换视频时一直加载的问题”——video.js、video-js.css

今天,又解决了一个单子“UniApp的音频播放——点击视频进入空白解决视频播放器切换视频时一直加载的问题” 一、问题描述 在开发一个基于 video.js 的视频播放器时,用户通过上下滑动切换视频时,视频一直处于加载状态,无法正常播放…...

【Pandas】pandas Series transform

Pandas2.2 Series Function application, GroupBy & window 方法描述Series.apply()用于将一个函数应用到 Series 的每个元素或整个 SeriesSeries.agg()用于对 Series 数据进行聚合操作Series.aggregate()用于对 Series 数据进行聚合操作Series.transform()用于对 Series…...

【博客之星2024年度总评选】年度回望:我的博客之路与星光熠熠

【个人主页】Francek Chen 【人生格言】征途漫漫,惟有奋斗! 【热门专栏】大数据技术基础 | 数据仓库与数据挖掘 | Python机器学习 文章目录 前言一、个人成长与盘点(一)机缘与开端(二)收获与分享 二、年度创…...

飞牛 使用docker部署Watchtower 自动更新 Docker 容器

Watchtower是一款开源的Docker容器管理工具,其主要功能在于自动更新运行中的Docker容器 Watchtower 支持以下功能: 自动拉取镜像并更新容器。 配置邮件通知。 定时执行容器更新任务。 compose搭建Watchtower 1、新建文件夹 先在任意位置创建一个 w…...

【Block总结】TAdaConv时序自适应卷积,轻量高效的时间建模卷积|即插即用

论文解读:Temporally-Adaptive Models for Efficient Video Understanding 论文信息 标题:Temporally-Adaptive Models for Efficient Video Understanding 发表时间:2023年 作者:黄子渊等 论文链接:arXiv 论文 代…...

Spring Boot 项目启动报错 “找不到或无法加载主类” 解决笔记

一、问题描述 在使用 IntelliJ IDEA 开发基于 Spring Boot 框架的 Java 程序时,原本项目能够正常启动。但在后续编写代码并重建项目后,再次尝试运行却出现了 “错误:找不到或无法加载主类 com.example.springboot.SpringbootApplication” 的…...

CSS 网络安全字体

适用于 HTML 和 CSS 的最佳 Web 安全字体 下面列出了适用于 HTM L和 CSS 的最佳 Web 安全字体: Arial (sans-serif)Verdana (sans-serif)Helvetica (sans-serif)Tahoma (sans-serif)Trebuchet MS (sans-serif)Times New Roman (serif)Georgia (serif)Garamond (se…...

Linux高并发服务器开发 第十五天(fork函数)

目录 1.fork 函数 1.1创建子进程 1.2getpid 函数 1.3getppid 函数 1.4getgid函数 1.5循环创建 n 个子进程 1.6fork后父子进程异同 1.6.1读时共享,写时复制 1.6.2fork后父子进程共享 1.6.3gdb调试父子进程 1.fork 函数 pid_t fork(void); 成功:…...

【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着机器学习在各行业的广泛应用,模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习&am…...

探秘自然地理:从太阳到地球的奇妙之旅与灾害预警

在浩瀚无垠的宇宙中,我们的地球与太阳紧密相连,它们的奥秘和变化,时刻影响着我们的生活。今天,就让我们一同深入探索自然地理的基础知识,揭开太阳与地球的神秘面纱,同时了解那些可能给我们带来巨大影响的自…...

go语言zero框架通过chromedp实现网页在线截图的设计与功能实现

在 GoZero 框架中实现网页在线截图的功能,可以通过集成 chromedp 库来控制 Chrome 浏览器进行截图。chromedp 是一个基于 Chrome DevTools 协议的 Go 包,可以用来在 Go 程序中模拟浏览器操作,如页面截图、DOM 操作、表单提交等。 下面是一个…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。​ 一、准…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...