Linux 磁盘满了怎么办?快速排查和清理方法

news2024/12/16 8:43:55

Linux 磁盘满了,会导致系统无法正常运行,比如无法写入文件、服务停止、甚至系统崩溃。因此,快速排查并清理磁盘空间是非常重要的。以下是详细的排查和解决步骤:


一、快速定位磁盘占用原因

1. 检查磁盘使用情况

使用 df 命令查看磁盘分区的使用情况:

bash

复制

df -h
  • 参数说明
    • -h:以人类可读的格式显示(GB、MB)。
  • 输出示例

    plaintext

    复制

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1        50G   45G  5G   90% /
    /dev/sda2       100G   95G  5G   95% /home
    

如果某个分区(如 //home)的 Use% 达到接近 100%,说明该分区已满。


2. 找出大文件和目录

(1) 使用 du 查找占用最多的目录

du 命令用于分析文件和文件夹的磁盘占用情况:

bash

复制

du -h --max-depth=1 /
  • 参数说明
    • -h:以人类可读的格式显示。
    • --max-depth=1:只查看顶级目录的大小。
  • 输出示例

    plaintext

    复制

    5.0G   /var
    20G    /home
    15G    /usr
    1.2G   /tmp
    

根据输出结果,进一步深入到占用空间较大的目录(如 /home):

bash

复制

du -h --max-depth=1 /home
(2) 使用 find 查找大文件

查找超过 1GB 的大文件:

bash

复制

find / -type f -size +1G 2>/dev/null
  • 参数说明
    • -type f:只查找文件。
    • -size +1G:查找大于 1GB 的文件。
    • 2>/dev/null:忽略权限不足导致的错误。

3. 检查挂载点问题

有时磁盘分区挂载错误可能导致文件写入到了根目录,而不是正确的挂载点:

  1. 检查是否有挂载问题:

    bash

    复制

    mount
    
  2. 如果某个挂载点(如 /mnt/data)没有正确挂载,可能会导致根分区被写满。
  3. 解决方法:
    • 确认挂载点:

      bash

      复制

      df -h
      
    • 如果未正确挂载,重新挂载分区:

      bash

      复制

      sudo mount /dev/sdX /mnt/data
      

二、清理磁盘空间

清理磁盘空间时,应谨慎操作,避免删除系统关键文件。以下是常见的清理方法:


1. 清理系统日志

(1) 检查日志目录

Linux 日志通常存储在 /var/log 中:

bash

复制

du -h /var/log
(2) 删除过大的日志文件

如果发现某些日志文件过大(如 syslogjournal 文件),可以清理或压缩:

bash

复制

sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/auth.log
(3) 清理 journal 日志

对于使用 systemd 的系统(如 Ubuntu 和 CentOS 7+),日志可能存储在 journal 中:

  • 查看日志占用空间:

    bash

    复制

    journalctl --disk-usage
    
  • 清理日志(保留最近 7 天的日志):

    bash

    复制

    sudo journalctl --vacuum-time=7d
    

2. 清理缓存文件

(1) 清理 apt 缓存(适用于 Debian/Ubuntu)

APT 会缓存已下载的软件包,占用大量空间:

bash

复制

sudo apt-get clean
(2) 清理 yum 缓存(适用于 CentOS/RHEL)

bash

复制

sudo yum clean all
(3) 清理临时文件

临时文件通常存储在 /tmp 目录中,可以安全删除:

bash

复制

sudo rm -rf /tmp/*

3. 删除未使用的旧内核

(1) 列出已安装内核

在 Ubuntu/Debian 系统中,列出所有内核版本:

bash

复制

dpkg --list | grep linux-image
(2) 删除旧内核

保留当前内核和最近的一个版本,其余都可以删除:

bash

复制

sudo apt-get autoremove --purge

对于 CentOS 系统:

bash

复制

sudo yum remove kernel-oldversion

4. 查找和清理无用文件

(1) 清理大文件

使用 find 找到大文件后,确认是否不再需要这些文件,删除它们:

bash

复制

sudo rm -f /path/to/large-file
(2) 清理用户的下载目录

检查 /home 目录下的用户文件:

bash

复制

du -h --max-depth=1 /home

删除不需要的文件或备份到其他存储设备。


5. 卸载不必要的大型软件包

(1) 列出已安装的软件包及其大小

在 Debian/Ubuntu 系统中:

bash

复制

dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -n

在 CentOS/RHEL 系统中:

bash

复制

rpm -qa --qf '%10{SIZE}\t%{NAME}\n' | sort -n
(2) 卸载不需要的软件

例如,卸载某个软件包:

bash

复制

sudo apt-get remove --purge package-name

或:

bash

复制

sudo yum remove package-name

6. 压缩备份文件

如果某些文件需要保留但不常用,可以压缩后存储:

bash

复制

tar -czvf backup.tar.gz /path/to/large-directory

然后将压缩文件移动到其他存储设备或云端。


三、预防磁盘再次占满的策略

  1. 定期监控磁盘使用

    • 使用 cron 定期运行 dfdu,并发送邮件报警:

      bash

      复制

      df -h | mail -s "Disk Usage Report" your-email@example.com
      
  2. 设置磁盘占用警告

    • /etc/fstab 中启用磁盘配额(Quota)功能,限制用户或目录的磁盘使用量。
  3. 使用独立分区管理

    • 将日志目录(/var/log)、临时目录(/tmp)、用户目录(/home)分区分开,避免单个分区写满后影响整个系统。
  4. 扩容磁盘

    • 如果所有清理措施后仍无法满足需求,可以考虑扩展磁盘(如通过云服务商增加硬盘空间)。

四、总结

当 Linux 磁盘满了时,按照以下步骤操作:

  1. 快速排查:使用 dfdu 定位问题分区和目录。
  2. 清理无用文件:删除日志、缓存、临时文件和旧内核。
  3. 优化存储:压缩或转移大文件,卸载不必要的软件。
  4. 长期策略:定期监控磁盘使用,分区独立管理或扩容磁盘。

通过上述方法,您可以快速释放磁盘空间并防止磁盘再次被占满。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenGL ES详解——多个纹理实现混叠显示

目录 一、获取图片纹理数据 二、着色器编写 1. 顶点着色器 2. 片元着色器 三、绑定和绘制纹理 1. 绑定纹理 2. 绘制纹理 四、源码下载 一、获取图片纹理数据 获取图片纹理数据代码如下: //获取图片1纹理数据 mTextureId loadTexture(mContext, R.mipmap.…

对话小系统(智能图书助手)

对话小系统(智能图书助手) 文章说明核心代码效果展示源码下载 文章说明 现在GPT的功能十分强大,是否可以利用开源的接口来实现自己的智能小助手呢,我想到可以提供一些能力接口,然后对问询内容进行意图识别,…

微服务-01

1.认识微服务 1.1 单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在一个工程中开发;项目部署时需要对所有模块一起编译、打包;项目的架构设计、开发模式都非常简单。 当项目…

WebView2教程(基于C++)【一】环境初始化

创建一个VisualStudio C项目,通过NuGet包管理器安装两个包: 注意,在项目属性页设置项目使用:C 20,子系统设置成窗口(相应的预处理器也要改变),DPI识别设置成每个监视器高DPI识别。 …

KMP算法图解解析(C语言)

文章目录 一.引言二.KMP算法解析三.代码实现1.对目标子串的处理(创建next数组)二.寻找子串的KMP算法实现 一.引言 kmp算法是由三位大牛共同研究提出的,全称为Knuth-Morris-Pratt算法,简写为KMP算法。 kmp算法用来解决子串的问题&a…

数据冒险、控制冒险、结构冒险

计算机组成原理 数据冒险、控制冒险、结构冒险 对所有用户(所有程序员)可见:PSW、PC、通用寄存器 PSW(条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)PC(跳转指令需要…

Python机器学习笔记(七、深度学习-神经网络)

深度学习算法经过精确调整,只适用于特定的使用场景。先学习较为简单的深度学习算法,用于分类和回归的多层感知机(multilayer perceptron,MLP),它可以作为研究更复杂的深度学习方法的起点。MLP 也被称为&…

Kylin麒麟操作系统 | Nginx服务部署

目录 一、理论储备1. Nginx概述2. Nginx与Apache的区别3. Nginx的服务配置 二、任务实施任务1 Nginx的编译安装1. Server配置2. 客户端测试 任务2 Nginx反向代理1. Server1配置2. Server2配置3. 客户端测试 一、理论储备 1. Nginx概述 Nginx是一个轻量级的web服务器&#xff…

【html网页页面012】html+css制作品牌主题宏宝莱网页含视频、留言表单(7页面附效果及源码)

品牌主题宏宝莱网页制作 🥤1、写在前面🍧2、涉及知识🌳3、网页效果完整效果(7页):代码目录结构:page1、首页page2、衍生品page3、包装设计page4、视频介绍page5、留言板page6、联系我们page7、详情页(三层页…

机器学习之交叉熵

交叉熵(Cross-Entropy)是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数,特别是在分类任务中非常常见。它源于信息论,反映了两个概率分布之间的距离。 交叉熵的数学定义 对于分类任务,假设我们有&#…

0001.基于springmvc简易酒店管理系统后台

一.系统架构 springmvcjsplayuimysql 二.功能特性 简单易学习,虽然版本比较老但是部署方便,tomcat环境即可启用;代码简洁,前后端代码提供可统一学习;祝愿您能成尽快为一位合格的程序员,愿世界没有BUG; …

无限次使用 cursor pro

github地址 cursor-vip 使用方式 在 MacOS/Linux 中,请打开终端; 在 Windows 中,请打开 Git Bash。 然后执行以下命令来安装: 部分电脑可能会误报毒,需要关闭杀毒软件/电脑管家/安全防护再进行 方式1:通过…

AI 语言模型产业的投资困境与发展困境分析

https://benn.substack.com/p/do-ai-companies-work 巨额投资与成本困境 大型语言模型(LLM)的开发成本惊人。根据报道,OpenAI 正在筹集 65 亿美元资金,每年约消耗 70 亿美元用于研究、开发新的 AI 服务和扩充团队。Anthropic 预计…

tryhackme——Pre Security(安检前)-Offensive Security(进攻性安全)

这里我用的edge的插件闪击翻译。这里我英语不好,所以用这个可以顺便学习下英语。 任务一:What is Offensive Security?(什么是进攻性安全?) 很简单啊,通过阅读,知道以下哪个选项更能代表您模拟黑客操作…

[论文阅读] |智能体长期记忆与反思

写在前面:10月份的时候,联发科天玑9400发布,搭载这款旗舰 5G 智能体 AI 芯片的荣耀MagicOS9.0实现了一句话让手机自动操作美团点咖啡。很快商场实体店里便能看到很多品牌手机已经升级为智能体语音助手。下一步,这些智能体或许便能…

CQRS Design Pattern in Microservices - CQRS模式

原文链接 CQRS Design Pattern in Microservices - GeeksforGeeks 【文章看起来像是AI写的。。。 😂😂😂】 简介 实现步骤 1,识别有界上下文:(Identify Bounded Contexts:) 2,命…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

RPC远程服务调用详解和gRPC简介

RPC (Remote Procedure Call)是远程过程调用,比如说现在有两台服务器A, B,一个在A服务器上的应用想要调用B服务器上的应用提供的某个,由于不在两个方法不在一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达…

计算机网络知识点全梳理(三.TCP知识点总结)

目录 TCP基本概念 为什么需要TCP 什么是TCP 什么是TCP链接 如何唯一确定一个 TCP 连接 TCP三次握手 握手流程 为什么是三次握手,而不是两次、四次 为什么客户端和服务端的初始序列号 ISN 不同 既然 IP 层会分片,为什么 TCP 层还需要 MSS TCP四…

PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)

分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…