首页 > 代码库 > 系统性能监控工具 - fuser

系统性能监控工具 - fuser

如果当我们要卸载某个装置时,他老是告诉我们device is busy , 那么到底是那个程序在使用这个装置呢?举例来说,当无法 umount /home时, 该怎么办?此时我们可以使用fuser来帮忙啦! 
[root@linux ~]# fuser [-ki] [-signal] file/dir 
参数: 
-k :找出使用该档案/目录的PID ,并试图以SIGKILL这个讯号给予该PID; 
-i :必须与-k配合,在删除PID之前会先询问使用者意愿! 
-signal:例如-1 -15等等,若不加的话,预设是SIGKILL (-9)啰! 
范例一:找出目前所在目录的使用PID为何? 
[root@linux ~]# fuser . 
.: 18852c 
[root@linux ~]# ps aux | grep 18852 
root 18852 0.0 0.4 5396 1588 pts/0 SN 10:12 0:00 bash 
用这个方式就可以得到使用该目录的PID了。此外,为何使用fuser的输出当中,在PID后面会有c呢?他代表的意义为: 
c:在当前的目录下; 
e:可以被执行的; 
f:是一个被开启的档案 
r:代表root directory

范例二:找到/var底下属于FIFO类型的档案,并且找出存取该档案的程序 
[root@linux ~]# find /var -type p 
/var/spool/postfix/public/qmgr 
/var/spool/postfix/public/pickup 
[root@linux ~]# fuser /var/spool/postfix/public/qmgr 
/var/spool/postfix/public/qmgr: 1666 1675 
[root@linux ~]# ps aux | egrep ‘(1666|1675)‘ 
root 1666 0.0 0.3 5640 1516 ? Ss Jul25 0:01 /usr/libexec/postfix/master 
postfix 1675 0.0 0.4 5744 1604 ? S Jul25 0:00 qmgr -l -t fifo -u

范例三:同范例二,但试图删除该PID? 
[root@linux ~]# fuser -ki /var/spool/postfix/public/qmgr 
/var/spool/postfix/public/qmgr: 1666 1675 
Kill process 1666 ? (y/N) n 
Kill process 1675 ? (y/N) n

 

系统性能监控工具 - fuser