Linux学习笔记总结(九十)- Linux中的lsof命令详解
熟悉linux 的朋友都知道,在linux系统中,一切皆文件,任何事物都以文件的形式存在。普通文件是文件,目录是文件,硬件设备也是文件(键盘、监视器、硬盘、打印机等),就连网络通信也都是文件。
任何进程在打开文件时,都会想内核申请一个文件描述符,该描述符为进程和操作系统之间的交互提供了通用接口。我可通过lsof命令查看这些信息。
lsof命令可以列出系统打开的所有的文件,当然不同的用户查看到的信息是不一样的,如果要查看所有完整的信息,那就要使用root用户的权限来执行lsof命令。
各列含义:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
lsof命令语法格式:
lsof [参数][文件]
常用参数:
-a:列出打开文件存在的进程
lsof –a –u know_action
-c :列出指定进程打开的文件信息
sudo lsof -d bash
-g:列出GID号的进程信息
-d:列出占用该文件好的进程
sudo lsof -d cwd
注:
0表示标准输入,1表示标准输出,2表示标准错误,应用程序所打开的文件的FD都是从3开始。
+d:列出该目录下被打开的文件
sudo lsof +d /usr/lib/x86_64-linux-gnu/gconv
+D:递归列出目录下被打开的文件
sudo lsof +D /dev/
-i:累出符合条件的进程
sudo lsof -i:22#tcp:80;UDP:53
-p:列出指定进程号所打开的文件
sudo lsof -p 861