熟悉linux 的朋友都知道,在linux系统中,一切皆文件,任何事物都以文件的形式存在。普通文件是文件,目录是文件,硬件设备也是文件(键盘、监视器、硬盘、打印机等),就连网络通信也都是文件。

任何进程在打开文件时,都会想内核申请一个文件描述符,该描述符为进程和操作系统之间的交互提供了通用接口。我可通过lsof命令查看这些信息。

lsof命令可以列出系统打开的所有的文件,当然不同的用户查看到的信息是不一样的,如果要查看所有完整的信息,那就要使用root用户的权限来执行lsof命令。

Linux学习笔记总结(九十)_进程

各列含义:

COMMAND:进程的名称

PID:进程标识符

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件。如cwdtxt

TYPE:文件类型,如DIRREG

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

lsof命令语法格式:

lsof [参数][文件]

常用参数:

-a:列出打开文件存在的进程

lsof –a –u know_action

Linux学习笔记总结(九十)_lsof_02

-c <进程名>:列出指定进程打开的文件信息

sudo lsof -d bash

Linux学习笔记总结(九十)_linux_03

-g:列出GID号的进程信息

-d<文件号>:列出占用该文件好的进程

sudo lsof -d cwd

Linux学习笔记总结(九十)_进程_04

注:

0表示标准输入,1表示标准输出,2表示标准错误,应用程序所打开的文件的FD都是从3开始。

+d<目录>:列出该目录下被打开的文件

sudo lsof +d /usr/lib/x86_64-linux-gnu/gconv

Linux学习笔记总结(九十)_linux_05

+D<目录>:递归列出目录下被打开的文件

sudo lsof +D /dev/

Linux学习笔记总结(九十)_命令_06

-i<条件>:累出符合条件的进程

sudo lsof -i:22#tcp:80;UDP:53

Linux学习笔记总结(九十)_linux_07

-p<进程号>:列出指定进程号所打开的文件

sudo lsof -p 861

Linux学习笔记总结(九十)_文件描述符_08

-u:列出UID号进程详情

sudo lsof -u 1001

Linux学习笔记总结(九十)_linux_09

-h:显示帮助信息

 Linux学习笔记总结(九十)_命令_10