lsof-文件监控常用命令
以下是阅读《软件性能测试、分析与调优实践之路 (张永清)》书籍和其他资料整理的读书笔记
lsof命令
lsof(list open file)是Linux操作系统中对文件进行监控的一个常用命令。使用该命令可以列出当前系统打开了哪些文件、系统中某个进程打开了哪些文件等信息。
主要选项参数释义
参数 | 作用 |
---|---|
-a | 列出打开文件存在的进程 |
-c <进程名> | 列出指定进程所打开的文件 |
-p <进程号> | 列出指定进程号所打开的文件 |
-g | 列出GID号进程详情 |
-d <文件号> | 列出占用该文件号的进程 |
+d <目录> | 列出目录下被打开的文件 |
+D <目录> | 递归列出目录下被打开的文件 |
-n <目录> | 列出使用NFS的文件 |
-i <条件> | 列出符合条件的进程。(4、6、协议、:端口、 @ip ) |
-u | 列出UID号进程详情 |
-h | 显示帮助信息 |
-v | 显示版本信息 |
安装lsof命令
yum install lsof -y
直接执行lsof
命令即可以显示当前操作系统打开了哪些文件。
lsof命令必须运行在root用户下,因为lsof命令执行时需要访问核心内存和内核文件
[root@vircent7 ~]# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 224 64 /
systemd 1 root rtd DIR 253,0 224 64 /
systemd 1 root txt REG 253,0 1632960 467282 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20064 12226 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265576 341954 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90160 12216 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 1429 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 38683 /usr/lib64/libcap-ng.so.0.0.0
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
lsof输出各列信息的意义如下
- COMMAND:进程的名称
- PID:进程的id编号
- USER:进程所有者,也就是这个进程是运行在哪个Linux用户下的
- PGID:进程所属组
- FD:文件描述符,应用程序通过文件描述符识别该文件
- TYPE:文件类型
- DEVICE:指定磁盘的名称
- SIZE/OFF:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
第5列FD是文件描述符 ( File Descriptor Number),常见文件描述符类型有
文件描述符简称(全称) | 解释 |
---|---|
cwd(current work dirctory) | 应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改 |
txt(program txt) | 该类型的文件是程序代码,如应用程序二进制文件本身或共享库,包括编译后的代码文件以及产生的数据文件等。 |
pd(parent directory) | 父目录 |
rtd(root directory) | root根目录 |
lnn(library references) | (AIX)(库引用) |