zoukankan      html  css  js  c++  java
  • Linux运维之如何查看目录被哪些进程所占用,lsof命令、fuser命令

    之前将一块硬盘挂载到某个目录下,但是现在我想卸载掉这块硬盘,无论如何都umount不了,有些同学可能说需要加上 -f 参数强制卸载,理论上是可以的,但是在我这里依然不起作用,比如:

    [root@:vg_adn_clickhouseTest_1ubuntu:: ~]#umount -f /data2
    umount: /data2: target is busy.

    我是把一块2T的硬盘挂载到/data2目录下了,可是现在就是卸载不了,说是设备忙,仔细分析一下可以得出应该是某些应用程序的进程占用了这块分区/data2 。应用程序一直在跑着,所以我们无法卸载这块硬盘。解决的方法就是找出哪个进程在占用这块硬盘。那我们知道一块硬盘一般上都是关联至某一个目录下的。所以我们就去找这个目录被哪些进程所占用。使用命令 lsof 即可

    [root@:vg_adn_clickhouseTest_2ubuntu:172.31.19.193 ~]#lsof /data2
    COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
    clickhous 31721 clickhouse    7wW  REG  253,0       59 45088774 /data2/clickhouse/status
    [root@:vg_adn_clickhouseTest_2ubuntu:172.31.19.193 ~]#kill -9 31721
    [root@:vg_adn_clickhouseTest_2ubuntu:172.31.19.193 ~]#service clickhouse-server status
    ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
       Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
       Active: activating (auto-restart) (Result: signal) since Wed 2019-01-16 10:51:32 UTC; 11s ago
      Process: 31721 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml (code=killed, signal=KILL)
      Process: 31715 ExecStartPre=/bin/chown clickhouse:clickhouse -R /etc/clickhouse-server (code=exited, status=0/SUCCESS)
      Process: 31713 ExecStartPre=/usr/bin/chown clickhouse:clickhouse -R /etc/clickhouse-server (code=exited, status=0/SUCCESS)
     Main PID: 31721 (code=killed, signal=KILL)
    
    Jan 16 10:51:32 ip-172-31-19-193 systemd[1]: clickhouse-server.service: Failed with result 'signal'.

    现在我们找到原来是clickhouse程序在占用这块磁盘,因此我们卸载不了。事实上,lsof命令后面也可以跟上lvm的名字也是可以查出来的。

    fuser命令也可以查看某块设备被哪个程序占用,

    假设无法卸载的设备为/dev/sdb1 
    1)运行下面命令看一下哪个用户哪个进程占用着此设备 
    fuser -m -v /dev/sdb1
    
    2)运行下面命令杀掉占用此设备的进程 
    fuser -m -v -k /dev/sdb1 
    或者fuser -m -v -k -i  /dev/sdb1(每杀掉一下进程会让你确认) 
    3)再umount
  • 相关阅读:
    oracle中的exists 和not exists 用法详解
    再次谈谈easyui datagrid 的数据加载
    oracle之trunc(sysdate)
    小菜学习设计模式(五)—控制反转(Ioc)
    vim实用技巧
    003_Linux的Cgroup<实例详解>
    systemd在各个linux发行版的普及
    (部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息
    中国科学院国家授时中心
    Linux时间同步配置方法
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/10279051.html
Copyright © 2011-2022 走看看