lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: 普通文件,目录,特殊的块文件,管道,socket套接字,设备,Unix域套接字等等,同时,它还可以结合 grep 以及 ps 命令进行更多的高级搜索
安装
lsof 命令默认是没有安装的,而且它的使用需要有root权限或者赋予普通用于sudo权限, 使用以下命令安装
yum install -y lsof
返回参数含义
- COMMAND 进程名
- PID 进程ID
- USER 所属用户
- FD 文件描述符 【cwd 当前目录】【txt txt文件】【rtd root目录】【mem 内存映射文件】
- TYPE 文件类型 【DIR 目录】【REG 普通文件】【CHR 字符】【a_inode inode文件】【FIFO 管道或者socket文件】【netlink 网络】【unknown 未知】
- DEVICE 设备ID
- SIZE/OFF 进程大小
- NODE 表示文件的inode号
- NAME 表示路径或者链接
常用参数
- -p pid 输出指定进程打开的文件
- -l 输出中使用ID代替用户名2
- -u userName 输出指定用户打开的文件
- -c string 输出command列中包含string的项
- -d fd 输出包含指定描述符的项
- fileName 输出打开文件fileName的所有项
- -i [46] [protocol][@hostname|hostaddr][:service|port] 输出符合指定条件的项 【46 分别指ipv4 ipv6】【protocol 指tcp或udp】【hostname 网络主机名】【hostaddr ip地址】【service 包含在/etc/services中的名称】
- port 端口号 可以是多个