fuser [-fuv] [-a|-s] [-4|-6] [-c|-m|-n space] [ -k [-i] [-M] [-w] [-SIGNAL] ] name ...
fuser -l
fuser -V
功能
fuser
可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.
描述
fuser
显示使用指定文件或者文件系统的进程 ID
.默认情况下每个文件名后面跟一个字母表示访问类型。
访问类型如下:
-
c
代表当前目录 -
e
可执行的被运行 -
f
打开的文件。默认不显示。 -
F
打开的文件,用于写操作。默认不显示。 -
r
根目录。 -
m
映射文件或者共享库。
当指定的文件没有被访问,或者出现错误的时候, fuser
会返回非零。
为了查看使用 tcp
和 udp
套接字的进程,需要 -n
选项并指定名称空间。默认 IpV4
和 IpV6
都会显示。
套接字可以是本地的或者是远程的端口,和远程的地址。所有的域是可选的,但是其前面的 ',' 必须存在。如下:
[lcl_port][,[rmt_host][,[rmt_port]]]
对于 ip
地址和 port
,名称和数字表示都可以使用。
fuser
只把 PID
输出到标准输出,其他的都输出到标准错误输出。
一些常用选项:
-
-a
显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。 -
-c
和-m
一样,用于POSIX
兼容。 -
-k
杀掉访问文件的进程。如果没有指定-signal
就会发送SIGKILL
信号。 -
-i
杀掉进程之前询问用户,如果没有-k
这个选项会被忽略。 -
-l
列出所有已知的信号名称。 -
-m name
指定一个挂载文件系统上的文件或者被挂载的块设备(名称name
)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/
",并使用所有挂载在那个目录下面的文件系统。 -
-n space
指定一个不同的命名空间(space
).这里支持不同的空间文件(文件名,此处默认)、tcp
(本地tcp
端口)、udp
(本地udp
端口)。对于端口,可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space
(即形如:80/tcp
之类的表示)。 -
-s
静默模式,这时候-u
,-v
会被忽略。-a
不能和-s
一起使用。 -
-signal
使用指定的信号,而不是用SIGKILL
来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP
,-1
),这个选项要和-k
一起使用,否则会被忽略。 -
-u
在每个PID
后面添加进程拥有者的用户名称。 -
-v
详细模式。输出似ps
命令的输出,包含PID
,USER
,COMMAND
等许多域,如果是内核访问的那么PID
为kernel.
-
-V
输出版本号。 -
-4
使用IPV4
套接字,不能和-6
一起应用,只在-n
的tcp
和udp
的命名存在时不被忽略。 -
-6
使用IPV6
套接字,不能和-4
一起应用,只在-n
的tcp
和udp
的命名存在时不被忽略。 -
-
重置所有的选项,把信号设置为SIGKILL.
更多参见 fuser
的 man
手册.
举例
显示使用某个文件的进程信息
$fuser -um /dev/sda2
输入之后,输出如下:
/dev/sda2: 6378c(quietheart) 6534c(quietheart) 6628(quietheart) 6653c(quietheart) 7429c(quietheart) 7549c(quietheart) 7608c(quietheart)
这个命令在 umount
的时候很有用,可以找到还有哪些用到这个设备了。
杀掉打开 readme
文件的程序,在确定之前有提示
$fuser -m -k -i readme
或
$fuser -kmi readme
这里,会在 kill
之前询问是否确定。最好加上 -v
以便知道将要杀那个进程。
查看那些程序使用 tcp
的 80
端口
$fuser -n tcp 80
或
$fuser -v -n tcp 80
或
$fuser -v 80/tcp
这里,后两种方式显示的信息比较全,因为有了 -v
选项。
其他
假设无法卸载的设备为 /dev/sdb1
-
运行下面命令看一下哪个用户哪个进程占用着此设备
fuser -m -v /dev/sdb1
-
运行下面命令杀掉占用此设备的进程
fuser -m -v -k /dev/sdb1
或者
fuser -m -v -k -i /dev/sdb1
(每杀掉一下进程会让你确认) 再
umount
杀掉所有以任何形式访问文件系统 /home
的进程
$fuser -km /home