Linux-fuser命令详解
fuser:使用文件或者套节字来表示识别进程。
Options
-a # 注释 :-a 显示所有指定文件的情况,即使没有进程访问它们。
-c
Same as -m option, used for POSIX compatibility.
-f
Silently ignored, used for POSIX compatibility.
-k
# 注释 :-k 表示杀死访问指定文件的进程。默认发送 SIGKILL (-9)信号。fuser 进程永远不会杀死自己。
# 但可能杀死其他 fuser 进程。在尝试杀死进程前,fuser 会改变 euid 为 ruid
-i
# 注释 :-i 表示交互模式,在杀死进程前会提示。必须和 -k 合用
-l
# 注释 :-l 列出所有已知的信号
-m
# 注释:-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。
# 假如指定了一个目录,则自动在后面加上 '/' 表示该挂载在该目录上的文件系统
-n space
# 注释 :-n 指定 sockets 的协议类型。可以是 file(默认)、udp、tcp 。
# 你甚至可以使用 '/' 的简写方式,只要不存在异义的话
-s
# 注释 :-s 表示安静模式。-u 和 -v 会被忽略,-a 不能和 -s 一起使用
-signal
# 注释:- 指定信号
-u
# 注释 :-u 表示在 PID 后面加上进程的 owner
-v
# 注释 :-v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段
# 如果是内核访问的(例如 mount point、swap 文件),则显示为 kernel 而不是 pid
-V
Display version information.
-4
Search only for IPv4 sockets. This option must not be used with the -6 option and only has an effect with the tcp and udp namespaces.
-6
Search only for IPv6 sockets. This option must not be used with the -4 option and only has an effect with the tcp and udp namespaces.
-
# 注释:‘-’ 表示重置所有选项并把信号设置为 SIGKILL
常用的两个功能:查看需要的进程和要杀死我查到的进程。
比如想umount光驱或者其他文件系统的的时候,结果系统提示设备正在使用或者正忙,可是又找不到到底谁使用了。这个时候fuser可派上用场了。
[root@rac1 tmp]# fuser -vm /usr/local/
USER PID ACCESS COMMAND
/usr/local/: root 1 .rce. init
root 2 .rc.. migration/0
root 3 .rc.. ksoftirqd/0
root 4 .rc.. migration/1
root 5 .rc.. ksoftirqd/1
root 6 .rc.. migration/2
root 7 .rc.. ksoftirqd/2
root 8 .rc.. migration/3
root 9 .rc.. ksoftirqd/3
root 10 .rc.. events/0
root 11 .rc.. events/1
root 12 .rc.. events/2
root 13 .rc.. events/3
在使用fuser -km 就可以杀死进程,同时也可以使用交互式的-i参数,一个一个杀死。
# 注释 :fuser 显示使用指定文件或者文件系统的进程的 pid ,默认会在每个 pid 后面加上一个字符表示访问的方式 :
# -)1、c :表示 current directory 。表示进程是在该目录下启动的。
# -)2、e :表示是可执行的程序
# -)3、f :打开文件。默认不显示
# -)4、r :root 目录,表示该目录是该进程的 / 目录
# -)5、m :表示 mmap 过的文件或者共享库
# 注释 :如果指定文件没有任何进程访问,或者出现严重错误,fuser 返回非 0 的 exit status。
# 如果至少存在一个进程,则 fuser 返回 0
# 注释:为了查找使用某个 TCP /UDP sockets 的进程,你必须用 -n 指定 (name space)tcp 还是 udp 。
# 默认 fuser 会查找 ipv4 和 ipv6 sockets 。你可以使用 -4 或者 -6 来改变选项
# sockets 可以按照 local port:remote_host:remote_port 的方式来指定。每个字段都是可选的,但不能省略 ','
[lcl_port][,[rmt_host][,[rmt_port]]]
Either symbolic or numeric values can be used for IP addresses and port numbers.
# 注释 ;在端口方面,你可以用端口名或者数字表示
fuser outputs only the PIDs to stdout, everything else is sent to stderr.
# 注释 :fuser 只输出 PID 到 stdout ,其他都送给 stderr
举例:
fuser -km /home
kills all processes accessing the file system /home in any way.
# 注释 :fuser -km /home 杀死所有访问 /home 文件系统的进程
if fuser -s /dev/ttyS1; then :; else something; fi
invokes something if no other process is using /dev/ttyS1.
fuser telnet/tcp
shows all processes at the (local) TELNET port.
fuser:使用文件或者套节字来表示识别进程。
Options
-a # 注释 :-a 显示所有指定文件的情况,即使没有进程访问它们。
-c
Same as -m option, used for POSIX compatibility.
-f
Silently ignored, used for POSIX compatibility.
-k
# 注释 :-k 表示杀死访问指定文件的进程。默认发送 SIGKILL (-9)信号。fuser 进程永远不会杀死自己。
# 但可能杀死其他 fuser 进程。在尝试杀死进程前,fuser 会改变 euid 为 ruid
-i
# 注释 :-i 表示交互模式,在杀死进程前会提示。必须和 -k 合用
-l
# 注释 :-l 列出所有已知的信号
-m
# 注释:-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。
# 假如指定了一个目录,则自动在后面加上 '/' 表示该挂载在该目录上的文件系统
-n space
# 注释 :-n 指定 sockets 的协议类型。可以是 file(默认)、udp、tcp 。
# 你甚至可以使用 '/' 的简写方式,只要不存在异义的话
-s
# 注释 :-s 表示安静模式。-u 和 -v 会被忽略,-a 不能和 -s 一起使用
-signal
# 注释:- 指定信号
-u
# 注释 :-u 表示在 PID 后面加上进程的 owner
-v
# 注释 :-v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段
# 如果是内核访问的(例如 mount point、swap 文件),则显示为 kernel 而不是 pid
-V
Display version information.
-4
Search only for IPv4 sockets. This option must not be used with the -6 option and only has an effect with the tcp and udp namespaces.
-6
Search only for IPv6 sockets. This option must not be used with the -4 option and only has an effect with the tcp and udp namespaces.
-
# 注释:‘-’ 表示重置所有选项并把信号设置为 SIGKILL
常用的两个功能:查看需要的进程和要杀死我查到的进程。
比如想umount光驱或者其他文件系统的的时候,结果系统提示设备正在使用或者正忙,可是又找不到到底谁使用了。这个时候fuser可派上用场了。
[root@rac1 tmp]# fuser -vm /usr/local/
USER PID ACCESS COMMAND
/usr/local/: root 1 .rce. init
root 2 .rc.. migration/0
root 3 .rc.. ksoftirqd/0
root 4 .rc.. migration/1
root 5 .rc.. ksoftirqd/1
root 6 .rc.. migration/2
root 7 .rc.. ksoftirqd/2
root 8 .rc.. migration/3
root 9 .rc.. ksoftirqd/3
root 10 .rc.. events/0
root 11 .rc.. events/1
root 12 .rc.. events/2
root 13 .rc.. events/3
在使用fuser -km 就可以杀死进程,同时也可以使用交互式的-i参数,一个一个杀死。
# 注释 :fuser 显示使用指定文件或者文件系统的进程的 pid ,默认会在每个 pid 后面加上一个字符表示访问的方式 :
# -)1、c :表示 current directory 。表示进程是在该目录下启动的。
# -)2、e :表示是可执行的程序
# -)3、f :打开文件。默认不显示
# -)4、r :root 目录,表示该目录是该进程的 / 目录
# -)5、m :表示 mmap 过的文件或者共享库
# 注释 :如果指定文件没有任何进程访问,或者出现严重错误,fuser 返回非 0 的 exit status。
# 如果至少存在一个进程,则 fuser 返回 0
# 注释:为了查找使用某个 TCP /UDP sockets 的进程,你必须用 -n 指定 (name space)tcp 还是 udp 。
# 默认 fuser 会查找 ipv4 和 ipv6 sockets 。你可以使用 -4 或者 -6 来改变选项
# sockets 可以按照 local port:remote_host:remote_port 的方式来指定。每个字段都是可选的,但不能省略 ','
[lcl_port][,[rmt_host][,[rmt_port]]]
Either symbolic or numeric values can be used for IP addresses and port numbers.
# 注释 ;在端口方面,你可以用端口名或者数字表示
fuser outputs only the PIDs to stdout, everything else is sent to stderr.
# 注释 :fuser 只输出 PID 到 stdout ,其他都送给 stderr
举例:
fuser -km /home
kills all processes accessing the file system /home in any way.
# 注释 :fuser -km /home 杀死所有访问 /home 文件系统的进程
if fuser -s /dev/ttyS1; then :; else something; fi
invokes something if no other process is using /dev/ttyS1.
fuser telnet/tcp
shows all processes at the (local) TELNET port.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29500582/viewspace-1357511/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29500582/viewspace-1357511/