lsof命令

转自:http://flowercat.iteye.com/blog/79088

 

lsof使用它既可以知道进程打开了哪些文件,也可以了解一个文件被哪个进程打开。

查看对某个文件的使用情况

查看哪些进程对某个文件进行了调用:

$ lsof /etc/passwd 1

查看对文件系统的使用

/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 [email protected]

$ lsof [email protected]: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 [email protected]: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 * 则是取反的意思*

你可能感兴趣的:(C++,c,socket,C#,网络协议)