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

记一次mount point is busy问题排查

概述

在针对公司防火墙设备制作补丁的时候,遇到个蛋疼的问题,补丁没有安装之前,“mount -o remount,ro /” 命令能正常执行,但是安装补丁后,总是提示“mount: /XX/XX: mount point is busy.”

问题分析

根据补丁改动的文件进行分析,fuser -mv /XX/XX,发现太多进程使用对应挂载点,没办法确认具体进程。后面在参考链接1里面找到简便方法

lsof +f -- /XX/XX | awk 'NR==1 || $4~/[0-9]+[uw -]/'

但是,我执行上面命令发现没有占用的程序,后面采用下面命令

lsof +f --  /XX/XX | more

分析输出内容,主要查看FD列,FD列的含义如下

The manpages describe the interpretation; 'r' for read; 'w' for write' and 'u' for read and write access.

r - 读; w - 写; u - 读写;

但是我在分析的时候,发现FD列并没有wu相关的标志,大部分是mem、reg、cwd之类的,但是发现多了个DEL标志,而且拥有该标志的文件就是补丁修改的某个动态库,最终确认问题根源。

问题根源

应该是修改的动态库被间接链接到该程序,但是我制作补丁的时候,没有重启该程序就直接替换动态库,从而引发了该问题。

解决方案

在补丁加上重启的对应进程的逻辑即可。

针对普通场景,临时解决方案也可以,通过以下命令,将占用进程全部杀一遍

fuser -kim /XX/XX

当然,通过mount -l参数(umount也一样)进行延迟处理也没问题。但是这个方案在我的问题应该是解决不了的。

参考链接

How to unmount a busy device

http://www.dtcms.com/a/270141.html

相关文章:

  • 数据结构 —— 栈(stack)在算法思维中的巧妙运用
  • C++进阶—二叉树进阶
  • 笔记/TCP/IP四层模型
  • Fence-音视频设备资源同步
  • IT 技术领域创作者三周年纪念日
  • 【CodeTop】每日练习 2025.7.8
  • Java 阻塞队列:7种类型全解析
  • 起重机械的工作循环门限值计算逻辑
  • 容器技术入门与Docker环境部署
  • Ntfs!LfsRestartLogFile函数分析之两次调用Ntfs!LfsReadRestart函数的目的
  • (生活比喻-图文并茂)http2.0和http3.0的队头阻塞,http2.0应用层解决,TCP层存在,3.0就是彻底解决,到底怎么理解区别???
  • AI健康小屋“15分钟服务圈”:如何重构社区健康生态?
  • MyBatis-Plus:深入探索与最佳实践
  • C#,js如何对网页超文本内容按行拆分,选择第A-B个字符返回HTM?
  • stack_queue扩展学习 --- 反向迭代器
  • 戴尔3670装win11和ubuntu双系统踩坑教程
  • 自动驾驶传感器的标定与数据融合
  • 【Android】组件及布局介绍
  • CAN主站转Modbus TCP网关:高铁门控系统的“毫秒级响应”密码
  • 【ZYNQ Linux开发】BRAM的几种驱动方式
  • 微服务集成snail-job分布式定时任务系统实践
  • Mac安装Docker(使用orbstack代替)
  • 单机分布式一体化数据库的架构设计与优化
  • 一个猜想不等式的推广
  • 业务分析技术实践篇
  • kafka集群安装
  • 让事情变得更好
  • Shader面试题100道之(21-40)
  • 光流 | RAFT光流算法如何改进提升
  • 【适合 Java 工程师的 AI 转型方向】