fuser:identify processes using files or sockets 查看文件或sockets或文件系统被哪些进程使用
fuser展示指定文件或文件系统被进程使用的pid和一个特定的类型标识。
c current directory.当前目录
e executable being run.可执行程序正在执行
f open file. f is omitted in default display mode. 打开的文件,默认不显示
F open file for writing. F is omitted in default display mode. 写文件,默认不显示
r root directory.根目录
m mmap’ed file or shared library 映射文件或共享库
示例:
[root@WebA-136 ~]# fuser -m /dev/sda2 /dev/sda2: 1004e 1080e 1087e 1482e 1616e 1620m 5879e 5917e 7919e 9413e 9455e 9459m 9474e [root@WebA-136 ~]# ps -ef | grep 9459 root 9459 9455 0 18:14 pts/2 00:00:00 -bash root 9474 9459 0 18:14 pts/2 00:00:00 vim /etc/passwd root 9528 1620 0 18:25 pts/0 00:00:00 grep 9459 [root@WebA-136 ~]#
常用选项:
-m 指定一个文件系统或一个块设备,列出当前文件系统上的文件由哪些进程使用
-a 列出指定的文件被哪些进程使用
-c 和-m一样,用于POSIX兼容
-k 杀掉访问文件的进程
-i 杀掉进程时需要询问进程用户,与-k同时使用
-l 列出所有已知的信号信息
-s 静默模式,-v -u不生效
-v 详细模式
-u 显示进程用户名
-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)
-4 与-n一起使用
-6 与-n一起使用
-a选项示例:
[root@WebA-136 ~]# cat test.sh #!/bin/bash # for i in {1..100} do echo '1' >> a.log sleep 10 done [root@WebA-136 ~]# fuser -a test.sh test.sh: 9563 [root@WebA-136 ~]# ps -ef | grep 9563 root 9563 9459 0 18:34 pts/2 00:00:00 /bin/bash ./test.sh root 9573 9563 0 18:35 pts/2 00:00:00 sleep 10 root 9576 1620 0 18:35 pts/0 00:00:00 grep 9563 [root@WebA-136 ~]#
-m选项:
[root@WebA-136 ~]# fuser -m /dev/sda6 /dev/sda6: 9563rce #上面示例的pid
-k选项:若不指定signal,默认发送SIGKILL
[root@WebA-136 ~]# fuser -a test.sh test.sh: 9609 [root@WebA-136 ~]# fuser -k test.sh test.sh: 9609 [root@WebA-136 ~]# fuser -a test.sh test.sh: [root@WebA-136 ~]# ./test.sh 已杀死 [root@WebA-136 ~]#
-l选项
[root@WebA-136 ~]# fuser -l HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED [root@WebA-136 ~]#