Linux 环境下umount, 报 device is busy 的问题分析与解决方法
在Linux环境中,有时候需要挂载外部目录或硬盘等,但当想umount时,却提示类似“umount:/home/oracle-server/backup:device is busy”这种提示。
出现这种提示的原因可能是该文件系统处于busy状态,不能卸载。
那么什么情况可能会导致文件系统处于“busy”状态呢,考虑一下三种情况:
1) 文件系统上面有打开的文件
2) 某个进程的工作目录在此文件系统上
3) 文件系统上面的缓存文件正在被使用
解决上述问题的方法是,可以使用fuser命令,fuser -km /home/oracle-server/backup(挂载文件系统)。关于fuser的使用,可以通过fuser --help查看详细参数。如下图

我们常用到的参数有两个:
-m 列出所有使用该文件系统的进程
-k 杀掉访问该文件系统的进程
所以对于我的环境来说,命令就是fuser -km /home/oracle-server/backup。这里要说明一下,执行这条命令时,要用正确的用户,那怎么知道正确的用户呢?可以查看所要umount目录的属性(使用ll命令查看)中的所属用户。
正常情况下,通过fuser命令之后,就可以使用umount命令卸载掉挂载目录了。
补充:
1 新挂载目录后原有目录中文件消失?
答案是原有文件并没有小时,只是隐藏了,看不到罢了。那这又是什么原因呢?
这个原因是由于Linux的VFS(虚拟文件系统)机制导致的,正常登录以后,所看到的各个目录,文件都是内核在加载时候构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(比如/home),系统就把VFS中的这个挂载点/home指向你最后所挂载的那个设备上。那么你现在访问该挂载点时,就会看到你最后挂载在此处的设备。而之前所挂载的设备依然在那里,只不过挂载点/home已经不再指向之前的设备。所以之前的数据是被隐藏了,但并没有删除,若umount挂载后,数据又重新回来了。
2 思考:为什么有时候会出现挂载某个光驱后umount会出现“umount: /mnt/cdrom: device is busy”
这是由于直接将/dev/cdrom mount 到了/mnt目录造成的。
正确挂载CD-ROM的方法应该如下:
#cd /mnt
# mkdir cdrom
# mount /dev/cdrom /mnt/cdrom
或者
# mount /dev/cdrom /media/cdrom
直接挂载在/mnt,/media等系统目录下,在umount时会出现出错信息“umount: /mnt/cdrom: device is busy”的情况。
Linux 环境下umount, 报 device is busy 的问题分析与解决方法的更多相关文章
- Linux 环境下思源黑体字体与 Java 之间的兼容性问题的解决(补充说明)
在前一篇随笔中,我讲了一下有关 Linux 环境下思源黑体与 Java 之间的兼容性问题,后来经过测试发现,默认安装的思源黑体字体同时包含简体字体和繁体字体,并且其对应的语言编码也是不同的.尝试着把繁 ...
- Linux环境下使用n更新node版本失败的原因与解决
Linux环境为CentOS 6.5 64位,阿里云低配服务器...学生优惠,然而下个月即将过期,真是个悲伤的故事 很久之前就安装了node,但是一直没有进行过升级,近日因为将部分异步代码更新为采用原 ...
- Windows环境下的RTKPlot_Qt版本编译时遇到的问题和解决方法
在使用了 RTKLIB开源包自带的 rtkplot.exe后,知道了它所具有的功能,就想着如何模仿它做出一个 demo.一开始看的是之前下载的 2.4.2版本的 RTKLIB,里面是使用 Delphi ...
- 【thinkphp 5 在nginx 环境下路由无法生效(404 500错误 )的解决方法】
非常惭愧的说,由于之前一直使用的是windowservice,安装apache来进行服务器布置的,这种方式也是最简单最直接的方式, 但是由于php的服务大多都是linux栈的,咱们也不能落后呀,在 ...
- 服务器个人环境下pytorch0.4.1编译warp-ctc遇到的问题及解决方法
一.关于warp-ctc CTC可以生成一个损失函数,用于在序列数据上进行监督式学习,不需要对齐输入数据及标签,经常连接在一个RNN网络的末端,训练端到端的语音或文本识别系统.CTC论文 CTC网络的 ...
- 关于 phpstudy环境下在MySQL中执行into outfile无法导入导出文件解决方法
之前在做sqli-labs练习,需要用到into outfile 出现以下问题: 执行SQL语句后在指定的路径下无文件生成. 例如: 执行 select into outfile "C:\\ ...
- Win10环境下 HTTP 错误 500.19 - Internal Server Error 问题及其解决方法
记一下今日份小bug... 明天要做软件架构实验了,今天打算测试下运行web项目,于是乎,找出了以前用JSP写的web项目测试运行不了,我再打开浏览器测试Tomcat服务器,在地址栏键入http:// ...
- Linux环境下MySQL报Table 'xxx' doesn't exist错误解决方法
修改了lower_case_table_names=1 后,业务发有个库的表打不开了,看了表名以前是大写,查了一下如果设置不区分大小写, 以前的大小表名要改成小写.重启服务后可用! MYSQL在LIN ...
- Yii2 PHPExcel在linux环境下导出报500错误
断点调试后发现是因为这句报错 header('Content-Type : application/vnd.ms-excel');删除后正常输出下载
随机推荐
- 分页查询最好加排序(order by)
昨天,与外部化系统对接时,发现有一个数据一直咩有集成到,双方各自排查了自己系统的代码,都觉得逻辑非常简单,无法就是一个分页查询而已. 问题就出在这个分页查询上. 为了说明当时问题发生的情景,我模拟了一 ...
- Batchnorm
Internal Covariate Shift:每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据的分布会发生变化,为下一层网络的学习带来困难(神经网络本来就是要学习数据的分布,要 ...
- 异常:Error resolving template "xxx", template might not exist or might not be accessible...解决办法
在开发环境下正常,但使用jar运行时,报错Error resolving template template might not exist or might not be accessible,意思 ...
- Android系统下app测试功能点
一.安装卸载 1.验证app能否正常的安装启动运行,安装后的文件夹及文件是否写到了指定的目录里,卸载后相关文件是否清除 2.软件安装/卸载过程中意外情况的处理是否符合需求(如死机,重启,断电) 3.安 ...
- tortoisegit里的cleanup坑
tortoisegit的clean up功能(以下红框部分)真的不要去点啊,你所有被ignore(忽略)的本地文件会被全部删除,而且是无法恢复的,因为远程仓库里根本就没有这些文件. 血的教训啊,本以为 ...
- sql语句进行写数据库时,字符串含有'的处理方式
如果字符串含有',sql语句在执行insert 或update时会发生错误,应将'替换成'',语句如下: land.Address = land.Address.Trim().Replace(&quo ...
- javascript高级程序设计第3版——第7章 函数表达式
此张内容的难点在于闭包.而闭包又涉及到原型,原型链,执行上下环境,this的取值等知识点.(此章节对于闭包的内容篇幅较少,且写的很是艰涩难懂,推荐一位大牛的博客,对于闭包的前因后果以及作用机制写的很明 ...
- redis最全配置讲解
#redis.conf# Redis configuration file example.# ./redis-server /path/to/redis.conf ################# ...
- yield的表达式形式与内置函数
yield的功能: 1. 与return类似,都可以返回值,不一样在于,yield可以返回多个值而且可暂停,再次执行可继续下一步操作,return到了就停止不在继续运行. 2.为封装好的的函数能够使用 ...
- JS 函数参数 及 函数数组
<script> function a(){ alert("a"); } function b(){ alert("b"); } var arr = ...