fuser 命令的介绍
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.
fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。
访问类型如下:
c 代表当前目录
e 将此文件作为程序的可执行对象使用
f 打开的文件。默认不显示。
F 打开的文件,用于写操作。默认不显示。
r 根目录。
m 映射文件或者共享库。
[root@limt01 dev]# fuser -h
Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...
[ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a display unused files too
-c mounted FS
-f silently ignored (for POSIX compatibility)
-i ask before killing (ignored without -k)
-k kill processes accessing the named file
-l list available signal names
-m show all processes using the named filesystems
-n SPACE search in this name space (file, udp, or tcp)
-s silent operation
-SIGNAL send this signal instead of SIGKILL
-u display user IDs
-v verbose output
-V display version information
-4 search IPv4 sockets only
-6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
常用选项
-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.
[root@limt01 dev]# fuser -m /home/limt/123.txt
/home/limt/123.txt: 4782c 4812c
PID后跟的字符说明了进程以何种方式与该目录/文件关联,有以下关联方式:
c 指示进程的工作目录
e 指示该文件为进程的可执行文件(即进程由该文件拉起)
f 指示该文件被进程打开,默认情况下f字符不显示
F 指示该文件被进程打开进行写入,默认情况下F字符不显示
r 指示该目录为进程的根目录
m 指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存
1 查看某个文件或者设备被那个进程使用
[root@limt01 dev]# fuser /var/log/messages
/var/log/messages: 1868
[root@limt01 dev]# ps -ef|grep 1868
root 1868 1 0 00:26 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root 4407 4371 0 08:31 pts/1 00:00:00 grep 1868
2 查看端口被那个进程打开
[root@limt01 dev]# fuser -4 -n tcp 22
22/tcp: 2317
[root@limt01 dev]# ps -ef|grep 2317
root 2317 1 0 00:26 ? 00:00:00 /usr/sbin/sshd
3 加v参数查看文件被那个进程使用
[root@limt01 dev]# fuser -v /home/limt/123.txt
用户 进程号 权限 命令
/home/limt/123.txt: limt 4623 f.... less
4 杀掉打开子文件或者设备的进程
[root@limt01 dev]# fuser -v /home/limt/123.txt
用户 进程号 权限 命令
/home/limt/123.txt: limt 4745 f.... less
[root@limt01 dev]#
[root@limt01 dev]#
[root@limt01 dev]# fuser -km /home/limt/123.txt
/home/limt/123.txt: 4666c 4745c
[root@limt01 dev]# fuser -v /home/limt/123.txt
[root@limt01 dev]#
fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。
访问类型如下:
c 代表当前目录
e 将此文件作为程序的可执行对象使用
f 打开的文件。默认不显示。
F 打开的文件,用于写操作。默认不显示。
r 根目录。
m 映射文件或者共享库。
[root@limt01 dev]# fuser -h
Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...
[ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a display unused files too
-c mounted FS
-f silently ignored (for POSIX compatibility)
-i ask before killing (ignored without -k)
-k kill processes accessing the named file
-l list available signal names
-m show all processes using the named filesystems
-n SPACE search in this name space (file, udp, or tcp)
-s silent operation
-SIGNAL send this signal instead of SIGKILL
-u display user IDs
-v verbose output
-V display version information
-4 search IPv4 sockets only
-6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
常用选项
-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.
[root@limt01 dev]# fuser -m /home/limt/123.txt
/home/limt/123.txt: 4782c 4812c
PID后跟的字符说明了进程以何种方式与该目录/文件关联,有以下关联方式:
c 指示进程的工作目录
e 指示该文件为进程的可执行文件(即进程由该文件拉起)
f 指示该文件被进程打开,默认情况下f字符不显示
F 指示该文件被进程打开进行写入,默认情况下F字符不显示
r 指示该目录为进程的根目录
m 指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存
1 查看某个文件或者设备被那个进程使用
[root@limt01 dev]# fuser /var/log/messages
/var/log/messages: 1868
[root@limt01 dev]# ps -ef|grep 1868
root 1868 1 0 00:26 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root 4407 4371 0 08:31 pts/1 00:00:00 grep 1868
2 查看端口被那个进程打开
[root@limt01 dev]# fuser -4 -n tcp 22
22/tcp: 2317
[root@limt01 dev]# ps -ef|grep 2317
root 2317 1 0 00:26 ? 00:00:00 /usr/sbin/sshd
3 加v参数查看文件被那个进程使用
[root@limt01 dev]# fuser -v /home/limt/123.txt
用户 进程号 权限 命令
/home/limt/123.txt: limt 4623 f.... less
4 杀掉打开子文件或者设备的进程
[root@limt01 dev]# fuser -v /home/limt/123.txt
用户 进程号 权限 命令
/home/limt/123.txt: limt 4745 f.... less
[root@limt01 dev]#
[root@limt01 dev]#
[root@limt01 dev]# fuser -km /home/limt/123.txt
/home/limt/123.txt: 4666c 4745c
[root@limt01 dev]# fuser -v /home/limt/123.txt
[root@limt01 dev]#