lsof
列出所有打开的文件。
lsof输出各列信息的意义
- COMMAND:进程的名称
- PID:进程标识符
- USER:进程所有者
- FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
- cwd:表示应用程序的当前工作目录
- RTD:根目录
- txt:txt类型文件是程序代码,应用程序二进制文件本身或共享库
- MEM:内存映射文件
- u:表示该文件被打开并处于读取/写入模式,而不是只读 (r) 或只写 (w) 模式。
- W:表示该应用程序具有对整个文件的写锁。该文件描述符用于确保每次只能打开一个应用程序实例。
- R:读访问初始打开每个应用程序时,都具有三个文件描述符,从 0 到 2,分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文件的FD都是从3开始。
- TYPE:文件类型,如DIR、REG等
- DIR:目录
- REG:基本文件
- CHR:字符特殊文件
- FIFO:先进先出
- UNIX:unix域套接字
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
选项
-a
:表示所有选项都必须满足时才显示结果。逻辑与。-c string
:显示COMMAND列中包含指定字符的进程打开的所有文件。-u user
:列出指定用户打开的文件。在用户名前面加^
标识排除指定用户的。-g gid
:用户组gid所打开的文件信息。-p pid
:按pid搜索。进程号前面加^
表示排除指定进程打开的文件。-d fd
:根据文件描述符列出对应文件信息。可以用-
指定一个FD的开头范围。+d dir
:显示dir目录下被进程打开的文件。+D dir
:显示dir目录(包括子目录)下被进程打开的文件。(Ubuntu12.04下跟+d
没区别)-n
:不将IP转换为hostname,缺省是不加-n
选项的。-s
:列出打开文件的大小,如果没有大小,则留下空白。-i [46] [protocol][@hostname|hostaddr] [:service|port]
46
:表示ipv4或ipv6。
protocol
:可以是TCP或UDP。
hostname
:因特网主机名。
service
:/etc/service
文件中的service name,可以不止一个,可以用逗号,
分隔多个。
port
:端口号,可以不止一个,可以用-
表示一个端口范围,或用逗号,
分隔多个。
举例
lsof -i :80,9000
:查看80和9000端口的运行情况。
lsof -a -u php -i :80,9000
:查看属于php用户的进程在80和9000端口的运行情况。
lsof filename
:查看正在使用filename的进程。
lsof -c php -c nginx
:列出多个进程(php、nginx)打开的文件信息。
lsof -i tcp
:列出所有tcp连接信息。
lsof -d 2
:根据文件描述符列出对应文件信息,此例显示文件描述符以2开头的文件信息。
lsof -d 2-4
:根据文件描述符列出对应文件信息,此例显示文件描述符以2、3、4开头的文件信息。
lsof +d /dev/
:列出/dev/目录的被打开的文件信息,不包括子目录下的。
欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。