Linux 磁盘空间告急时的应急处理策略
发布时间 - 2026-01-29 00:00:00 点击率:次这是典型的“已删除但未释放文件”问题:进程仍占用已被rm删除的文件句柄,导致df显示满而du统计小;可用lsof +L1或lsof|grep deleted定位,重启进程或kill释放,禁用echo>/proc//fd/清空。
df 显示磁盘已满,但 du 统计总和远小于该值
这是典型的“已删除但未释放文件”问题:某个进程仍在占用已被 rm 删除的文

执行 lsof +L1 可列出所有被删除但仍被打开的文件(+L1 表示 link count = 0);若无输出,尝试 lsof | grep deleted(部分旧版 lsof 不支持 +L1)。
常见场景包括:日志轮转后旧进程未重载、容器内应用未响应 SIGUSR1、长时间运行的 tail -f 指向已被删的日志。
- 确认后,可选择重启对应进程(如
systemctl restart nginx),或直接 kill 进程(kill -9)强制释放 - 不建议用
echo > /proc/清空文件内容——可能破坏进程逻辑,且对只读 fd 无效/fd/ - 若为容器环境,需进入容器命名空间排查:
nsenter -t,再查-m -u -i -n -p -- /bin/sh /proc/self/fd/
快速定位大目录:du 和 ncdu 的取舍
du -sh /* 2>/dev/null | sort -hr 是最轻量的顶层扫描方式,但会跳过权限不足目录(如 /root、/var/lib/lxc)。
若需深度扫描且机器有交互终端,优先用 ncdu:ncdu / 支持键盘导航、实时排序、按 d 安全删除,比纯 du 更直观。
- 无 ncdu 时,可用
du -h --max-depth=1 /var 2>/dev/null | sort -hr逐级下钻,避免一次性扫全盘耗时过长 - 注意
du默认统计逻辑大小,对稀疏文件(如 qcow2 镜像)可能严重低估实际占用,此时应加--apparent-size对比 - 别在
/proc、/sys、/dev上跑du——这些是虚拟文件系统,du会卡住或报错
清理 /var/log 下的 journald 日志
systemd-journald 默认不限制日志体积,长期运行的服务器可能积累数十 GB 的 /var/log/journal/ 数据。
先查当前用量:journalctl --disk-usage;再按需清理:
- 保留最近 3 天:
journalctl --vacuum-time=3d - 限制总大小为 500M:
journalctl --vacuum-size=500M - 永久生效:编辑
/etc/systemd/journald.conf,取消注释并修改SystemMaxUse=500M和MaxRetentionSec=1month - 注意:设太小会导致
journalctl -u sshd查不到历史记录;生产环境建议至少留 100M
临时腾空间:用 truncate 清空正在写入的大文件
当发现某个正在被追加的日志(如 /var/log/syslog 或应用自定义 log)占满磁盘,又不能停服务时,truncate 是最安全的清空手段。
与 > file 或 echo "" > file 不同,truncate -s 0 file 不改变 inode、不中断写入流,进程仍可继续写入。
- 务必确认目标文件确实在被持续写入(
lsof +L1 | grep file或ls -l /proc/*/fd/ | grep file) - 禁止对数据库数据文件、qcow2 镜像、二进制可执行文件使用
truncate——会直接损坏数据 - 操作前建议先备份 inode:
ls -i /path/to/file,清空后检查是否仍是同一 inode,确保没被重建
真正棘手的情况往往不是空间不够,而是清理后空间立刻又被填满——这说明有异常写入源(如无限循环日志、coredump 未关闭、监控 agent 本地缓存暴增)。这时候得盯住 inotifywait -m -e create,modify /var/log 或 fatrace 实时抓写入行为。
# linux
# node
# nginx
# app
# ai
# red
# echo
# NULL
# count
# sort
# 命名空间
# 循环
# var
# 数据库
# 清空
# 已被
# 这是
# 句柄
# 镜像
# 重启
# 但未
# 长时间
# 仍是
# 自定义
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
php json中文编码为null的解决办法
简历在线制作网站免费版,如何创建个人简历?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
网站建设保证美观性,需要考虑的几点问题!
Linux网络带宽限制_tc配置实践解析【教程】
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
北京网站制作的公司有哪些,北京白云观官方网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
如何生成腾讯云建站专用兑换码?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
微信小程序 wx.uploadFile无法上传解决办法
如何用搬瓦工VPS快速搭建个人网站?
高防服务器租用如何选择配置与防御等级?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
网站图片在线制作软件,怎么在图片上做链接?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel如何配置和使用缓存?(Redis代码示例)
Bootstrap CSS布局之列表
如何快速重置建站主机并恢复默认配置?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel storage目录权限问题_Laravel文件写入权限设置
HTML 中动态设置元素 name 属性的正确语法详解
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
微信小程序 input输入框控件详解及实例(多种示例)
WordPress 子目录安装中正确处理脚本路径的完整指南
免费视频制作网站,更新又快又好的免费电影网站?
如何注册花生壳免费域名并搭建个人网站?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
如何快速搭建支持数据库操作的智能建站平台?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
网站页面设计需要考虑到这些问题

