当前位置:首页>Linux>Linux 提示“设备或资源忙”?最全排查和根治方案

Linux 提示“设备或资源忙”?最全排查和根治方案

  • 2026-09-11 18:55:20
Linux 提示“设备或资源忙”?最全排查和根治方案
做linux运维的人员一定遇到过这样的故障,卸载或者删除某个文件时,系统提示
Device or resource busy
此时删目录删不掉、卸载磁盘失败、移动文件夹报错、改挂载点卡死……。
大部分人的第一反应:暴力强制删、强制卸载。但生产环境这么干,极易引发:
  • 文件句柄泄露、磁盘空间不释放
  • 业务卡死、日志异常
  • 文件系统损坏、甚至机器宕机
    今天我结合生产实践和网络资料,把可能的情况都做一个详细的介绍。
    一、为什么会出现资源忙的情况?
    linux内核机制:只要文件或目录及设备被进程、终端、挂载、句柄占用,内核就会锁定,禁止删除、移动、卸载。常见主要有4大原因:
    业务进程正在读写(日志、Java、脚本、nginx 等)
    有终端 cd 进入了该目录
    磁盘、镜像、目录处于挂载状态
    loop设备、lvm、设备映射未释放

    不推荐上来就暴力操作

    正确流程:找占用 → 释资源 → 再操作

    二、定位占用的两条常用命令
    1、fuser---专治目录挂载点忙
    排查目录、挂载被哪个进程占用,最快最准
    #查看目录占用进程fuser -m /disk2#详细模式(推荐)fuser -vm /disk2
    直接显示:pid、用户、进程名,一眼锁定罪魁祸首。
    2、lsof---专治文件和句柄占用
    #递归查看目录所有被打开文件lsof +D /data#排查:已删除但空间不释放(运维高频坑)lsof | grep deleted
    重点:deleted文件,磁盘不释放,必须重启对应进程!
    三、四大生产场景:逐个根治
    场景 1:明明没程序跑,目录就是忙
    常见原因:有终端进入了这个目录
    Linux 不允许删除 / 卸载当前工作目录。
    #退出目录cd ~
    再配合fuser -m 查其他终端占用,退出即可。
    场景 2:日志和文件删了空间不释放、提示忙
    常见原因:进程持有旧文件句柄
    典型:nginx、tomcat、java、服务进程。
    正确步骤(生产安全):
    • lsof +D /目录 定位pid
    • 优雅停止进程kill -15 pid
    • 清理文件/目录
    • 重启业务
    应急一键释放(仅紧急用):
    fuser -k -m /data
    像我们的终端有占用data目录,直接连接断开了,一半仅在紧急清理下使用。
    场景 3:umount 卸载磁盘一直busy
    最常见原因:挂载点有进程、终端、读写占用。
    生产最安全解法(强烈推荐):
    #延迟卸载:业务平稳后自动释放,不丢数据umount -l /data
    #排查前置: 
    fuser -vm /挂载点
    场景 4:镜像、loop、虚拟设备提示忙
    很多人找不到进程,是因为不是进程占用,是设备占用。
    排查loop设备:
    #排查loop设备losetup -alsblk | grep loop#释放步骤:umount /dev/loop0p1#释放loop设备losetup -d /dev/loop0#如果是 LVM / 设备映射忙: dmsetup ls --treedmsetup remove 设备名
    四、注意事项
    • 不要暴力 rm -rf 忙目录会造成句柄泄露、磁盘占用不释放、IO 异常。
    • deleted 文件不重启进程 = 空间永远不释放删文件没用,必须重启持有进程。
    • 优先 -l 延迟卸载,杜绝 -f 强制卸载
    • 目录忙优先查终端 cd 占用80% 问题在这里。
    五、总结
    linux资源忙不是故障,是内核保护机制。标准根治流程永远是:查占用 → 优雅释放 → 再操作只要不暴力硬搞,一般不会出生产事故。如果你觉得文章对你的运维工作有帮助,记得点赞加关注。
    #运维#linux运维#linux实战#linux资源忙问题处理

    最新文章

    随机文章