fuser 指令
用途
使用文件或文件结构识别进程。
语法
fuser [ -c | -d | -f ] [ -k ] [ -u ] [ -x ] [ -V ]文件 ...
说明
此 fuser 命令列出了本地进程的进程号,那些本地进程使用File 参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。
每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。
c 将此文件作为当前目录使用。
e 将此文件作为程序的可执行对象使用。
r 将此文件作为根目录使用。
s 将此文件作为共享库(或其它可装载对象)使用。
进程号被写入标准输出(在进程号之间有空格的行中)。一个换行符被写入标准错误(在每个文件操作数的最后一个输出之后)。其他所有输出被写入标准错误。
此 fuser 命令不会检测有 mmap 区域的进程,其中相关的文件描述符已从此被关闭。
标记
-c 包含 File的文件系统中关于任何打开的文件的报告。
-d 暗示使用了 -c 和 -x 标志。关于任何与文件系统(自父目录删除的)无链接的打开文件的报告。当与 -V 标志一起使用时,它也会报告被删除文件的节点号和大小。
-f 仅对文件的打开实例报告。
-k 将 SIGKILL 信号发送到每个本地进程。仅有根用户能终止另一用户的进程。
-u 为进程号后圆括号中的本地进程提供登录名。
-V 提供详细输出。
-x 与 -c 或 -f 连用,报告除标准 fuser 输出以外的可执行的和可载入的对象。
示例
若要列出使用 /etc/passwd 文件的本地进程的进程号,请输入:
fuser /etc/passwd要列出使用 /etc/filesystems 文件的进程的进程号和用户登录名,请输入:
fuser -u /etc/filesystems要终止全部使用给定的文件系统的进程,请输入:
fuser -k -x -u /dev/hd1 -OR-
fuser -kxuc /home任一命令都列出了进程号和用户名,然后终止每个正在使用 /dev/hd1 (/home) 文件系统的进程。仅有根用户能终止属于另一用户的进程。如果你正在试图卸下 /dev/hd1 文件系统,而一个正在访问 /dev/hd1 文件系统的进程不允许这样,您可能希望使用此命令。
要列出正在使用文件(已从给定文件系统删除的文件)的全部进程,请输入:
fuser -d /usr文件
/dev/kmem 用于系统映象。
/dev/mem 也用于系统映象。
相关信息
killall 命令、mount 命令和 ps 命令。
LSOF:
2) lsof -i :22 知道22端口现在运行什么程序
3) lsof -c nsd 显示nsd进程现在打开的文件
4) lsof -g gid 显示归属gid的进程情况
5) lsof +d /usr/local/ 显示/usr/local目录下被进程开启的文件
6) lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
7) lsof -d 4 显示使用fd为4的进程
8) lsof -i [i] 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4位置
service --> /etc/service中的 service name (可以不只一个)
port --> 端口号 (可以不只一个)
例子: TCP:25 - TCP and port 25
@1.2.3.4 - Internet IPv4 host address 1.2.3.4
tcp@ohaha.ks.edu.tw:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp
9) lsof -n 不将IP转换为hostname,缺省是不加上-n参数
例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n
10) lsof -p 12 看进程号为12的进程打开了哪些文件
11) lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新
-r,lsof会永远不断的执行,直到收到中断信号
+r,lsof会一直执行,直到没有档案被显示
例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r
12) lsof -s 列出打开文件的大小,如果没有大小,则留下空白
13) lsof -u username 以UID,列出打开的文件
lsof -i TCP:port -n
lsof -i UDP:port -n
lsof -i :port -n
# lsof -i tcp:1521 -n
LSOF是针对Unix的诊断和分析工具,它能显示出由系统里正在运行的进程所打开的文件,也能显示出每一个进程的通讯socket。
Contents
* 查看对某个文件的使用情况
* 查看对文件系统的使用
o 查找打开,但是不能连接的文件
* 无法卸载
* 查看监听socket
* 查看某个网络连接
* 识别 Netstat 连接
* 查找针对某个命令打开的文件
* 查看某个用户的操作
* 更多信息
* Bibliography
查看对某个文件的使用情况
查看哪些进程对某个文件进行了调用:
$ lsof /etc/passwd
查看对文件系统的使用
/tmp目录被垃圾文件塞满了, 但是, 用ls 又看不到太大文件, 谁干的?
$ lsof /tmp
查找打开,但是不能连接的文件
一个进程打开一个文件, 然后将其设为 unlinked 状态, 则此文件资源仍能被进程使用, 但是其访问路径已经被删除了. 因此, 使用ls不能将其列出. 只有当进程结束时, 才能释放文件占用的资源
查找unlinked 文件, 选项 +L, 作用: 列出打开文件的连接数
$lsof +L
指定连接数的上限 $lsof +L1
同时指定文件系统, 则需要使用 -a(AND) 选项
$ lsof -a +L1 /home
无法卸载
查看谁令mount的分区无法卸载
$ lsof <file_system_name>
查看监听socket
查看网络服务
$ lsof -i
查看某个网络连接
$ lsof -i@aaa.bbb.ccc
$ lsof -iTCP@aaa.bbb.ccc:ftp-data *指定协议*
$ lsof -i4 *指定IP版本*
$ lsof -i6
识别 Netstat 连接
例如: netstat -p -t -n 的输出为:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 218.56.203.246:52634 202.109.72.72:7000 ESTABLISHED
则可以: tony@tony:~$ lsof -iTCP@202.109.72.72:7000
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xchat 4505 tony 12u IPv4 5775 TCP 218.56.203.246:52634->202.109.72.72:afs3-fileserver (ESTABLISHED)
查找针对某个命令打开的文件
使用命令的PID
$ lsof -p <PID>
使用命令名称
$ lsof -c <first_characters_of_command_name_that_interest_you>
$ lsof -c sendmail
查看谁在使用设备文件
$ lsof /dev/hda6
查看某个用户的操作
$ id -u tony
1000
$ lsof -u1000 or $ lsof -utony
$ lsof -u^tony * 则是取反的意思*