Linux 之 lsof 命令
lsof(list open files)是一个查看当前系统文件的工具。在 linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。
安装 lsof
Centos
Ubuntu
命令格式
lsof [参数][文件]
命令功能
用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为
lsof
需要访问核心内存和各种文件,所以需要 root 用户执行。
lsof 打开的文件可以是:
1.普通文件
2.目录
3.网络文件系统的文件
4.字符或设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.网络文件(例如:NFS file、网络 socket,unix 域名 socket)
9.还有其它类型的文件,等等
命令参数
-a 列出打开文件存在的进程
-c<进程名> 列出指定进程所打开的文件
-g 列出 GID 号进程详情
-d<文件号> 列出占用该文件号的进程
+d<目录> 列出目录下被打开的文件
+D<目录> 递归列出目录下被打开的文件
-n<目录> 列出使用 NFS 的文件
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件
-u 列出 UID 号进程详情
-h 显示帮助信息
-v 显示版本信息
列出系统所有打开的文件
会有很多数据, 上面只截取了一部分
字段说明
COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R 参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。如 cwd、txt 等
TYPE:文件类型,如 DIR、REG 等,常见的文件类型
(1)DIR:表示目录
(2)CHR:表示字符类型
(3)BLK:块设备类型
(4)UNIX: UNIX 域套接字
(5)FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
FD 说明
查看/bin/bash
被谁占用
递归查看当前目录文件信息
子目录文件占用情况也显示出来
不使用+D 选项,遍历查看某个目录的所有文件信息的方法
列出某个用户打开的文件信息
-u 选项,u 其实是 user 的缩写
列出某个程序进程所打开的文件信息
列出多个进程多个打开的文件信息
列出除了某个用户外的被打开的文件信息
通过某个进程号显示该进行打开的文件
列出多个进程号对应的文件信息
列出除了某个进程号,其他进程号所打开的文件信息
列出所有的网络连接
列出谁在使用某个端口
同时指定多个端口
列出谁在使用某个特定的 udp 端口
特定的 tcp 端口
列出所有 tcp 网络连接信息
列出所有 udp 网络连接信息
列出某个用户的所有活跃的网络端口
列出所有网络文件系统
列出 COMMAND 列中包含字符串" sshd",且文件描述符的类型为 txt 的文件信息
列出被进程号为 123 的进程所打开的所有 IPV4 network files
-i 4
代表的是IPV4
,-i 6
代表的是IPV6
某个用户组所打开的文件信息
根据文件描述列出对应的文件信息
0 表示标准输入,1 表示标准输出,2 表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从 3 开始
根据文件描述范围列出文件信息
原文链接:https://rumenz.com/rumenbiji/linux-lsof.html微信公众号:入门小站
版权声明: 本文为 InfoQ 作者【入门小站】的原创文章。
原文链接:【http://xie.infoq.cn/article/d0be81b5b1ab250887892b5e4】。文章转载请联系作者。
评论