在Linux下卸载文件系统
卸载文件系统相关命令:umount
卸载相关辅助命令:fuser kill lsof
直白说,使用辅助命令找到被打开的文件,kill之,在umount之
以下转载,出自今生路人甲blog
命令介绍:
umount 设备点名称|挂载目录
umount选项解释:
-V 打印版本信息并且推出。
[root@node5 ~]# umount -V
umount (util-linux 2.13-pre7)
[root@node5 ~]# rpm -qa|grep util-linux
util-linux-2.13-0.50.el5
这里显示umount命令属于util-linux 2.13-pre7的rpm包,然后我们使用rpm查询命令可以找到系统具体安装的rpm包。
-h 打印简要帮助信息。
[root@node5 ~]# umount -h
Usage: umount [-hV] umount -a [-f] [-r] [-n] [-v] [-t vfstypes] [-O opts]
umount [-f] [-r] [-n] [-v] special | node...
-v 打印详细信息。
如果我们使用umount -个目录或者设备点,如果成功的话,不带-v选项,将不会打印信息。
[root@node5 ~]# umount -v /dev/mapper/vg01-share
/dev/mapper/vg01-share umounted
-n umount的时候不会更新/etc/mtab文件
-r 如果umount失败,重新挂载文件系统为只读模式
-a /etc/mtab中记录的文件系统全部卸载
-t 指定文件系统类型。如ext3,fat32,iso9600等
-f 强制卸载。in case of an unreachable NFS system
-l 属于一个延迟卸载,等文件系统所有资源释放后在卸载。
umount的绝对路径一般是/bin/umount,权限为
-rwsr-xr-x 1 root root 38936 Nov 25 2008 /bin/umount
也就是所有用户都可以执行这条命令,但是一般不带-n选项,一般用户是无法执行成功的,因为/etc/mtab文件的权限位只有root用户可写。
umount 后面可以指定设备文件名也可以指定挂载点。umount使用挂载点和设备文件名是不同的,当使用挂载点时,也就是卸载当前挂载点的文件系统,当使用设备文件名时,也就是卸载当前设备所对应的文件系统全部卸载。也就是说一个设备点可以被多次挂载,一个挂载点只对应一个设备。
fuser 识别进程使用的文件或者套接字
fuser显示进程所使用文件系统或者文件的进程号加上使用的方式(字母标识)。各字母的具体含义如下:
c 当前目录
e 执行目录
f 打开文件
F 打开文件用来写
r 根目录
m 映射文件或者共享库
fuser 返回值。如果没有进程在使用该文件或者文件系统返回非0,如果有进程在使用则返回0
fuser 打印输出。 pid号打印到标准输出,其他的打印到标准错误。
主要的命令行选项:
-k 发送SIGILL信号给进程,也就是强制杀掉使用文件或者文件系统的进程,等同于kill -9
-i 交互模式
-l 显示可以发送的信号
[root@node5 ~]# 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
这些信号的标准模式为SIG+显示的名字
-m 显示使用文件或者文件系统的进程
-signal 发送信号给进程
-4|-6 使用IPV4或者IPV6
实例1:
显示使用/share(为一挂载点)的进程
[root@ser221 ~]# fuser -m /share
/share: 11755c 11863c
详细模式:
[root@ser221 ~]# fuser -mv /share
USER PID ACCESS COMMAND
/share: mysql 11755 F.c.. mysqld
com 11863 ..c.. ComServer
实例2:
查看使用3306端口的进程:
[root@ser221 ~]# fuser -n tcp 3306
3306/tcp: 11755
[root@ser221 ~]# fuser -nv tcp 3306
USER PID ACCESS COMMAND
3306/tcp: mysql 11755 F.... mysqld
lsof暂时没有使用,这个命令同样可以获得文件系统的使用情况。
umount filesystem最经常碰到的问题就是‘device is busy’,
在这种情况下,我们结合使用fuser就可以看到哪些进程在使用挂载点,然后停掉进程,就可以umount成功
-4|-6 使用IPV4或者IPV6
实例1:
显示使用/share(为一挂载点)的进程
[root@ser221 ~]# fuser -m /share
/share: 11755c 11863c
详细模式:
[root@ser221 ~]# fuser -mv /share
USER PID ACCESS COMMAND
/share: mysql 11755 F.c.. mysqld
com 11863 ..c.. ComServer
实例2:
查看使用3306端口的进程:
[root@ser221 ~]# fuser -n tcp 3306
3306/tcp: 11755
[root@ser221 ~]# fuser -nv tcp 3306
USER PID ACCESS COMMAND
3306/tcp: mysql 11755 F.... mysqld
lsof暂时没有使用,这个命令同样可以获得文件系统的使用情况。
umount filesystem最经常碰到的问题就是‘device is busy’,
在这种情况下,我们结合使用fuser就可以看到哪些进程在使用挂载点,然后停掉进程,就可以umount成功