在linux系统中,fuser命令可以显示出当前哪个程序在使用磁盘上的某个文件、mount挂载点、甚至网络端口,并给出程序进程的详细讯息。
假设无法卸载的设备为/var,运行命令:
$ fuser -m -v /var
用户进程号权限命令:
fuser-m -v /var
USER PID ACCESS COMMAND
/var: root 2003 F…. auditd
root 2037 F…. syslogd
root 2114 F…m pcscd
root 2230 F.c.. master
postfix 2241 F.c.. qmgr
root 2248 F.c.. crond
root 2568 F.c.. atd
root 2659 ..c.. named
postfix 4230 F.c.. pickup
参数说明:
-m 参数显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备;
-v参数给出详细的输出,可以看出,原来是gqview这个程序还在霸占着移动设备,fuser还给出了程序的进程号。
获知进程号,便可以自由处置这个程序了。
此命令可以添加一个-k参数:
fuser -m -k /var
自动杀死占用/var的程序。
如果需要杀死进程前确认的话,还可以加一个-i参数:
$ fuser -m -v -i -k /var
用户进程号权限命令
/var: galeki 2659 ..c.. named
杀死进程2659 ? (y/N)
通过fuser命令,完成进程的查找,继续停掉相关进程,然后umount,便不会出现Device is busy的提示了。
1,umout 移动硬盘
复制数据时,挂载的移动硬盘,数据复制完成后,直接取下了硬盘。
结果用df 命令查看时,挂载的移动硬盘还存在,阿门。
Filesystem Size Used Avail Use% Mounted on
/dev/sdb3 125G 3.3G 115G 3% /
/dev/sdb1 99M 12M 82M 13% /boot
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sda1 275G 72G 189G 28% /u01
/dev/sdc1 10G 2.0G 8.1G 20% /datatmp
/dev/sdc1即刚才挂载的移动硬盘设备。
这时使用umount 命令,会提示设备忙(device is busy),无法挂载。
解决方法:
[root@qs-wg-db1 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sdb3 125G 3.3G 115G 3% /
/dev/sdb1 99M 12M 82M 13% /boot
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sda1 275G 72G 189G 28% /u01
/dev/sdc1 10G 2.0G 8.1G 20% /datatmp
[root@qs-wg-db1 ~]# umount /datatmp
[root@qs-wg-db1 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sdb3 125G 3.3G 115G 3% /
/dev/sdb1 99M 12M 82M 13% /boot
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sda1 275G 72G 189G 28% /u01
这次umount成功了。
二,umount 光驱
图方便,直接将/dev/cdrom mount 到了/mnt目录。
结果收工时去拿盘,光驱弹不出来。
尝试把cdrom umout掉,结果提示:device is busy。
处理方法:
[root@qs-wg-db1 ~]#eject -- 弹出光驱
以下为正确挂载CD-ROM的方法:
# mount /dev/cdrom /mnt/cdrom
或者
# mount /dev/cdrom /media/cdrom
直接挂载在/mnt,/media等系统目录下,在umount时会出现出错信息“umount: /mnt/cdrom: device is busy”的情况。
如果一个文件系统处于“busy”状态时,不能卸载该文件系统。
以下情况将导致文件系统处于“busy”状态:
1,文件系统上面有打开的文件
2,某个进程的工作目录在此文件系统上
3,文件系统上面的缓存文件正在被使用
在linux系统中,输入命令:
df -HT
查看到有移动硬盘挂载在/mnt/usbdisk目录下...
原因分析是上次mount之后,没有完整umount。
执行umount时,竟提示:device is busy
强行: umount /dev/sdb2 -f
提示:umount2: 设备或资源忙
umount: /mnt/usbdisk: device is busy
好吧,查询下使用情况: fuser -m /mnt/usbdisk
有 6406 进程在使用..
ps aux | grep 6406
再kill
接着umount 提示还是失败...
接着 fuser -k /mnt/usbdisk
提示:
/mnt/usbdisk/: 6406c
No automatic removal. Please use umount /mnt/usbdisk
按提示操作: umount /mnt/usbdisk OK 搞定!
整个解决问题的过程,还算是顺畅,不过device is busy的问题,有时原因会有多种,建议大家在处理这类问题时,理清思路,逐个击破哦。