linux 查看某文件是否正在使用(被读写)

  • Post author:
  • Post category:linux



fuser功能


fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.

fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。

访问类型如下:

c 代表当前目录

e 将此文件作为程序的可执行对象使用

f 打开的文件。默认不显示。

F 打开的文件,用于写操作。默认不显示。

r 根目录。

m 映射文件或者共享库。

s 将此文件作为共享库(或其他可装载对象)使用

当指定的文件没有被访问,或者出现错误的时候,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 指定一个挂载文件系统上的文件或者被挂载的块设备