歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> linux下強制卸載掛接點—umount+Fuser命令詳解

linux下強制卸載掛接點—umount+Fuser命令詳解

日期:2017/2/27 16:02:13   编辑:Linux教程
如果你的光盤掛載在/mnt/cdrom
使用umount /dev/cdrom提示busy
可以使用以下命令強行卸載。
fuser -km /mnt/cdrom
umount /mnt/cdrom

Linux命令Fuser詳解
使用文件或者套節字來表示識別進程。我常用的他的兩個功能:查看我需要的進程和我要殺死我查到的進程
比如當你想umount光驅的時候,結果系統提示你設備正在使用或者正忙,

可是你又找不到到底誰使用了他。這個時候fuser可派上用場了。
[root@lancy sbin]# eject
umount: /media/cdrom: device is busy
umount: /media/cdrom: device is busy
eject: unmount of `/media/cdrom' failed

[root@lancy sbin]# fuser /mnt/cdrom
/mnt/cdrom: 4561c 5382c

[root@lancy sbin]# ps -ef |egrep '(4561|5382)' |grep -v grep
root 4561 4227 0 20:13 pts/1 00:00:00 bash
root 5382 4561 0 21:42 pts/1 00:00:00 vim Autorun.inf

示例中,我想彈出光驅,系統告訴我設備忙著,於是采用fuser命令,參數是你文件或scoket,fuser將查出那些使用了他。4561c,5382c表示目前用兩個進程在占用著/mnt/cdrom,分別是4561,5382,進程ID後的字母表示占用資源的方式,有下面幾種表示:

c 當前路徑(current directory.)我的理解是表示這個資源的占用是以文件目錄方式,也就是進進入了需要釋放的資源的路徑,這是最常用的資源占用方式。

e 正在運行可執行文件(executable being run.),比如運行了光盤上的某個程序
f 打開文件( open file),缺省模式下f忽略。所以上面的例子中,雖然是開打了光盤上的Autorun.inf文件,但是給出的標識是c,而不是f。
r root目錄(root directory).沒有明白什麼意思,難道是說進入了/root這個特定目錄?
m mmap文件或者共享庫( mmap’ed file or shared library).這應該是說某個進程使用了你要釋放的資源的某個共享文件。


在查找的同時,你還可定指定一些參數,比如:
-k 殺死這些正在訪問這些文件的進程。除非使用-signal修改信號,

否則將發送SIGKILL信號。
-i 交互模式
-l 列出所有已知的信號名稱。
-n 空間,選擇不同的名字空間,可是file,udp,tcp。默認是file,也就是文件。

-signal 指定發送的信號,而不是缺省的SIGKILL
-4 僅查詢IPV4套接字
-6 僅查詢IPV6套接字
- 重置所有的選項,將信息設回SIGKILL

再看下面的例子
[root@lancy sbin]# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM

TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH

IO PWR SYS
UNUSED

現在我們試試fuser -k的威力:
[root@lancy sbin]# fuser -k /mnt/cdrom
/mnt/cdrom: 4561c 5382c
kill 5382: 沒有那個進程
No automatic removal. Please use umount /media/cdrom
[root@lancy sbin]# eject

套節字方式的使用:
[root@lancy sbin]# fuser -4 -n tcp 80
here: 80
80/tcp: 5685 5688 5689 5690 5691 5692 5693 5694 5695
Copyright © Linux教程網 All Rights Reserved