Linux显示磁盘空间不足,/tmp文件夹占用100%问题分析和解决方案

系统运行过程中发现无法上传文件,第一反应是磁盘空间不足导致,登录服务器后查看文件存放的空间充足,但是无法上传文件且命令行的tab键自动补充也提示空间不足。最后经过搜索和分析发现是/tmp 文件夹占用100%导致。以下记录分析和解决流程。

问题分析

        服务器环境

                操作系统:银河麒麟V10

                CPU:鲲鹏(ARM)

1. 通过 df -h 查看磁盘占用,发现/dev/vdb1 (文件存放路径)占用42%,空间充足;但是/tmp 文件夹占用率100%;

df -h
Linux显示磁盘空间不足,/tmp文件夹占用100%问题分析和解决方案

这里已经释放了部分空间所以/tmp占用为91%。

2. 进入/tmp路径查看占用情况,发现文件占用才5.7M,实际总空间有16G。

cd /tmp
Linux显示磁盘空间不足,/tmp文件夹占用100%问题分析和解决方案

3. 由于tmp为临时文件夹,文件使用结束后自动删除,猜测存在文件被删除但是空间未释放的情况。通过 lsof  /tmp 查看文件情况,发现有大量的文件被删除但是依旧被进程占用,导致无法释放空间。

lsof  /tmp
Linux显示磁盘空间不足,/tmp文件夹占用100%问题分析和解决方案
  1. 通过以上截图查看占用文件的进程PID为3860289,此进行未部署的springboot项目。正常情况下重启项目即可释放,但是当前为线上项目,重启会影响用户使用。所以需要不通过重启释放空间。

解决问题

  1. 查询文件占用进程的文件fd信息 ls -i /proc/{进程PID}/fd 举例如下:
 ls -i /proc/3860289/df
Linux显示磁盘空间不足,/tmp文件夹占用100%问题分析和解决方案

2. 通过 >/proc/{进程pid}/fd/{文件fd} 解除空间占用(文件fd为上图中红色部分第一个数字),举例如下:

>/proc/3860289/fd/999

3. 批量解除文件占用,可通过编写shell脚本解决,举例:删除pid为3860289中fd为500到1000的文件占用。

#!/bin/bash
for i in {500..1000}
do
/proc/3860289/fd/$i
done

4. 以上为临时删除文件占用,最后可通过重启应用解决问题 kill -9 {PID}

kill -9 3860289(PID)

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/10723

(0)
凯影的头像凯影
上一篇 2023年12月22日 下午2:35
下一篇 2023年12月25日 下午3:58

相关推荐

  • NetSet – 自动化网络流量安全增强工具

    NetSet旨在自动执行多个操作,以帮助用户保护网络流量。它还提供了一种通过Tor收集代理和运行实用程序的简便方法。NetSet安装和使用的也是自动配置,该工具主要用于辅助性网络安全任务。 实现了一种按需使用的终端多路复用器,它的会话通过Tor路由网关。通过自动安装和配置DNSCrypt-proxy来保护DNS流量。Tor Wall功能强制所有流量通过Tor…

    2023年10月8日
    45400
  • Rocky9的安装与基本配置

    安装 Rocky Linux 9.0 设置语言为:中文 — 简体中文(中国) 注意: 默认 Rocky Linux 9.0 安全设置禁用了 SSH 使用 root 密码登录了,所以在设置 root 用户密码的时候,记得勾选[允许 root 用户使用密码进行 SSH 登录] 开始安装 安装完成,点击[重启系统] 内核升级到了5.14 登录成功 防火墙配置 SE…

    2023年4月7日
    1.1K00
  • Centos7中搭建WebDav的服务

    一 什么是WebDAV 百度百科的定义:WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序Web Server直接读写,并支持写文件锁定(Lock…

    2023年3月9日
    57900
  • Centos7下离线安装mysql8.0.20

    一、下载linux mysql8.0 离线安装包 首先去mysql官网下载mysql的离线rpm安装包(https://downloads.mysql.com/archives/community/) 二、安装mysql 1、由于mariadb中的lib包和mysql8.0.20的lib包冲突,如果已经安装了mariadb,则需要将其卸载。 2、卸载mari…

    2022年12月5日
    63600
  • docker搭建ELK日志平台

    ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。 由于Logstash占用的资源比较大,我们选择filebeat这个轻量级的日志收集工具来代替Logstash 一、安装ELK 首先,我们通过docker-compose来安装单机版elasticsearch和kibana。 创建docker…

    2023年1月13日
    72900

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信