概述
lsof(list open files)是一个查看当前系统文件的工具。
Linux环境下,任何事物都以文件的形式存在,通过文件可以访问各种数据。
lsof可以打开的文件包括但不限于如下类型:
- 普通文件
- 目录
- 网络文件系统的文件
lsof命令参数说明及使用例子
无参数
lsof | more

- 输出列信息说明
| 命令 | 说明 |
|---|---|
| COMMAND | 进程名称 |
| PID | 进程标识符 |
| USER | 进程所有者 |
| FD | 文件描述符 |
| TYPE | 文件类型 |
| DEVICE | 指定磁盘名称 |
| SIZE | 文件大小 |
| NODE | 索引节点(文件在磁盘上的标识) |
| NAME | 打开文件的确切名称 |
-
FD详述
应用程序通过文件描述符识别该文件- cwd:表示current work dirctory,即应用程序当前目录(应用程序启动的目录)
- txt: 程序代码,应用程序二进制文件本身或共享库
-
TYPE详述
- DIR: 目录
- CHR: 字符类型
- IPv4: 网际协议(IP)套接字
- FIFO: 先进先出(FIFO)队列
查看某个文件相关的进程
lsof /bin/bash

列出某个用户打开的文件信息
- lsof -u username
使用-u选项,u是user的缩写
lsof -u biby | more

列出某个程序进程所打开的文件信息
可以使用以下两种方式
lsof - c mysql
lsof | grep mysql

列出某个用户以及某个进程所打开的文件的信息
lsof -u biby -c mysql

通过某个进程号显示该进程打开的文件
lsof -i tcp:9035

列出所有网络链接
lsof -i

列出所有tcp网络连接信息
lsof -i tcp

列出是谁在使用端口
lsof -i :3306

列出某个用户的所有活跃的网络端口
lsof -a -u biby -i

根据文件描述列出对应的文件信息
- lsof -d description(like 2)
0表示标准输入,1表示标准输出,2表示标准错误
大多数应用程序所打开文件的FD都是从3开始
lsof -d 3 | grep Google

列出被某个进程所打开的所有IPv4 network files
lsof -i 4 -a -p 1231

列出连接主机10.1.2.x上端口为20,21,80,22相关的所有文件信息,且每隔3秒重复执行
lsof -i @10.1.2.x:20,21,80,22 -r 3
