lsof
lsof(list open files)是一个列出当前系统打开文件的工具。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
lsof 命令可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
a,列出所有正在使用文件
[root@localhost zhangy]# lsof
b,找出谁在使用某个文件
[root@localhost zhangy]# lsof /usr/sbin/httpd COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd 3738 root txt REG 8,6 319380 2697479 /usr/sbin/httpd httpd 3793 zhangy txt REG 8,6 319380 2697479 /usr/sbin/httpd httpd 3794 zhangy txt REG 8,6 319380 2697479 /usr/sbin/httpd httpd 3795 zhangy txt REG 8,6 319380 2697479 /usr/sbin/httpd
c,递归查找某个目录中所有打开的文件
[root@localhost zhangy]# lsof +D /usr/local COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ruby 3754 root txt REG 8,6 5985821 3151658 /usr/local/ruby/bin/ruby ruby 3754 root mem REG 8,6 10513 3177073 /usr/local/ruby/lib/ruby/1.9.1/i686-linux/enc/encdb.so ruby 3754 root mem REG 8,6 7960 3177560 /usr/local/ruby/lib/ruby/1.9.1/i686-linux/fcntl.so
d,列出某个用户打开的所有文件
[root@localhost zhangy]# lsof -u zhangy |more #单个用户 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd 3793 zhangy cwd DIR 8,6 4096 2 / httpd 3793 zhangy rtd DIR 8,6 4096 2 / httpd 3793 zhangy txt REG 8,6 319380 2697479 /usr/sbin/httpd httpd 3793 zhangy mem REG 8,6 162724 2699347 /usr/lib/libapr-1.so.0.2.7 httpd 3793 zhangy mem REG 8,6 245376 2881960 /lib/libsepol.so.1 httpd 3793 zhangy mem REG 8,6 293308 2882226 /lib/libssl.so.0.9.8e [root@localhost zhangy]# lsof -u zhangy,root #多个用户
e,查找某个程序打开的所有文件
[root@localhost zhangy]# lsof -c httpd
f,列出除root用户外的所有用户打开的文件
[root@localhost zhangy]# lsof -u ^root
g,列出所有由某个PID对应的进程打开的文件
[root@localhost zhangy]# lsof -p 3738
h,列出所有网络连接
[root@localhost zhangy]# lsof -i
i,列出所有TCP网络连接
[root@localhost zhangy]# lsof -i tcp
j,找到使用某个端口的进程
[root@localhost zhangy]# lsof -i:80 #查看一下80端口的进程 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd 3738 root 3u IPv6 10791 TCP *:http (LISTEN) httpd 3793 zhangy 3u IPv6 10791 TCP *:http (LISTEN) httpd 3794 zhangy 3u IPv6 10791 TCP *:http (LISTEN) httpd 3795 zhangy 3u IPv6 10791 TCP *:http (LISTEN) httpd 3796 zhangy 3u IPv6 10791 TCP *:http (LISTEN) httpd 3797 zhangy 3u IPv6 10791 TCP *:http (LISTEN) [root@localhost zhangy]# lsof -i udp:53 #查看 一下udp,53端口 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME dnsmasq 3939 nobody 7u IPv4 11321 UDP 192.168.122.1:domain
参考文章:http://linux.51yip.com/search/lsof