有时候咱们须要umount某个挂载目录时会遇到以下问题:php
[root@localhost /]# umount /data/nginx
umount.nfs: /data: device is busybash
经过这条命令查看:socket
[root@localhost /]# fuser -m -v /data/tcp
用户 进程号 权限 命令ide
/data/: root 2798 ..c.. bashphp-fpm
root 2996 ..c.. su进程
-v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段it
-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。全部访问该文件系统的进程都被列出。io
如上所示,有两个进程占用了,将其kill掉,再从新取消挂载。
[root@localhost /]# kill -9 2798
[root@localhost /]# kill -9 2996
[root@localhost /]# umount /data/
[root@localhost /]#
成功!
fuser 概述
fuser命令是用来显示全部正在使用着指定的file, file system 或者 sockets的进程信息。
[root@gc-statis2 ]# fuser -m -v tests/
用户 进程号 权限 命令
tests/: root 7300 F.ce. php-fpm
www 7301 ..ce. php-fpm
www 7302 ..ce. php-fpm
www 7303 ..ce. php-fpm
www 7304 ..ce. php-fpm
www 7305 ..ce. php-fpm
www 7306 ..ce. php-fpm
www 7307 ..ce. php-fpm
www 7308 ..ce. php-fpm
www 7309 ..ce. php-fpm
root 18891 ..c.. bash
同时fuser 能够用来查找哪些进程正在使用指定的端口(network port).
[root@gc-statis2 ]# fuser -v -n tcp 80
用户 进程号 权限 命令
80/tcp: root 7975 F.... nginx
www 7976 F.... nginx
fuser 经常使用场景
fuser一般被用在诊断系统的“resource busy”问题,一般是在你但愿umount指定的挂载点得时候遇到。 若是你但愿kill全部正在使用某一指定的file, file system or sockets的进程的时候,你能够使用-k option。
fuser –k /path/to/your/filename
这时fuser会向因此正在使用/path/to/your/filename的进程发送SIGKILL。若是你但愿在发送以前获得提示,能够使用-i 选项。
fuser –k –i /path/to/your/filename