zoukankan      html  css  js  c++  java
  • 【转】linux命令之:umount取消挂载---解决umount.nfs: /data: device is busy 问题

    转自:https://www.cnblogs.com/saneri/p/5465718.html

    有时候我们需要umount某个挂载目录时会遇到如下问题:

    1
    2
    [root@localhost /]# umount /data/
    umount.nfs: /data: device is busy

    通过这条命令查看:

    1
    2
    3
    4
    [root@localhost /]# fuser -m -v /data/
                         用户     进程号 权限   命令
    /data/:              root       2798 ..c.. bash
                         root       2996 ..c.. su

    -v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段

    -m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。

    如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。

    1
    2
    3
    4
    [root@localhost /]# kill -9 2798
    [root@localhost /]# kill -9 2996
    [root@localhost /]# umount /data/
    [root@localhost /]#

    成功!

    fuser 概述

    fuser命令是用来显示所有正在使用着指定的file, file system 或者 sockets的进程信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [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).

    1
    2
    3
    4
    [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。

    1
    fuser –k  /path/to/your/filename  

    这时fuser会向所以正在使用/path/to/your/filename的进程发送SIGKILL。如果你希望在发送之前得到提示,可以使用-i 选项。

    1
    fuser –k –i /path/to/your/filename
     
     
  • 相关阅读:
    Codeforces467C George and Job
    Codeforces205E Little Elephant and Furik and RubikLittle Elephant and Furik and Rubik
    Codeforce205C Little Elephant and Interval
    51nod1829 函数
    51nod1574 排列转换
    nowcoder35B 小AA的数列
    Codeforce893E Counting Arrays
    gym101612 Consonant Fencity
    CodeForces559C Gerald and Giant Chess
    CodeForces456D A Lot of Games
  • 原文地址:https://www.cnblogs.com/coreLeo/p/11759006.html
Copyright © 2011-2022 走看看