解決umount.nfs: /data: device is busy 問題

有時候咱們須要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

相關文章
相關標籤/搜索