fuser

检索使用指定文件或套接字的进程


语法格式

fuser [-a|-s|-c] [-muv] [-4|-6] [-n space] [-k [-i] [-signal]] files
fuser [-] [-muv] [-4|-6] [-n space] [-k [-i] [-signal]] files
fuser -l
fuser -V

命令简介

fuser命令主要用于检索与显示访问指定文件或文件系统的进程ID。其中,files是一个或一组文件、目录或文件系统安装点。在默认的显示信息中,每个进程后面可能跟有下列的一个或一组表示访问类型的字母:

c  表示进程正在使用指定的目录作为其当前目录。

e  表示指定的文件是当前正在运行的程序文件。

f  表示进程已打开了指定的文件(在默认的显示模式中,忽略f)。

F  表示进程已采用写方式打开了指定的文件(在默认的显示模式中,忽略F)。

r  表示进程正在使用指定的目录作为其根目录。

m  表示进程正在使用指定的文件作为内存映射文件或共享库函数。

如果没有进程访问指定的文件、目录或文件系统,或遇到致命的错误时,fuser返回非0的结束状态。如果至少有一个进程访问指定的文件、目录或文件系统,fuser返回0。

若想检索使用TCP与UDP套接字的进程,必须使用“-n”选项选择相应的名字空间。通常,fuser会同时检索IPv4与IPv6套接字。若想改变这一默认的行为,可以使用“-4”或“-6”选项。指定套接字时,可以采用下列格式指定本地端口(名字或代码)、远程主机名或IP地址,以及远程端口(名字或代码)。其中任何字段都是选用的,但缺失字段前面的逗号“,”必须存在。

[local_port][,[remote_host][,[remote _port]]]

注意,除非超级用户,由于访问权限的限制,普通用户运行fuser命令时收集的数据可能并不完整。

命令选项

-a  显示命令行中指定的所有文件或目录。通常,仅显示至少有一个进程正在访问的文件或目录。

-c  相当于“-m”选项,提供此选项的目的主要是考虑POSIX的兼容性。

-k  终止正在访问指定文件或目录的进程。除非“-signal”选项另有指定,发送的信号是SIGKILL。fuser进程绝不会终止自身,但可以终止其他fuser进程。在尝试终止进程之前,fuser进程的有效用户ID将设置成调用者的真实用户ID。

-i  在终止进程之前,提请用户予以确认。如果“-k”不存在,忽略此选项。

-l  列出fuser命令能够识别的所有信号名。

-m  如果命令参数files是已安装文件系统中的一个文件,访问该文件系统中任何文件的所有进程均被列出。如果命令行参数files是一个目录,fuser会自动考察安装在该目录下的任何文件系统。

-n space  选择不同的名字空间。支持的名字空间是file(文件名,默认)、udp(本地的UDP端口)和tcp(本地的TCP端口)。选用端口时,既可以是端口号,也可以是符号名,甚至可以使用诸如80/tcp等表示方式。

-s  安静运行模式。如果存在,忽略“-u”和“-v”选项。注意,“-s”不能与“-a”选项一起使用。

-signal  使用指定的信号(而非默认的SIGKILL信号)终止进程。指定的信号可以是信号名(如“-HUP”)或数字信号(如“-1”)。如果未指定“-k”选项,不加提示地忽略此选项。

-u  在每个进程ID后面附加运行进程的用户名(前后加圆括号)。

-v  详细显示模式。采用类似ps命令的风格显示进程。其中的USER、PID和COMMAND字段类似于ps命令。ACCESS字段表示进程怎样访问文件。如果是内核访问(如内核访问安装点或交换区文件等),显示的是kernel而非进程ID。

-V  显示命令的版本与版权等信息,然后正常退出。

-4  仅检索IPv4套接字。“-4”不能与“-6”选项一起使用,且仅适用于tcp与udp名字空间。

-6  仅检索IPv6套接字。其他同上。

-  重置所有的选项,把信号恢复成SIGKILL。

应用实例

1. 终止访问/home文件系统的所有进程,包括自己当前的系统会话。

$ fuser -km /home

2. 显示访问本地telnet端口的所有进程。

# fuser telnet/tcp
telnet/tcp:                1590    3135
#

[1] 在某些系统中无此目录。——编者注


索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z