一、概述
在linux中,所有东西都是以文件的形式存在的,所以我们在linux上的操作都是通过对文件的操作来执行我们所需要的逻辑,比如我们对文件数据的访问,修改,访问网络的连接等,刚好lsof(list open file)命令用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
安装命令:yum install lsof #centos系统
二、语法和内容含义
2.1、使用语法
语法:lsof [options] filename
常用选项:
无选项 #默认列出所有打开的文件相关信息
file #列出打开文件存在的进程
-a #使用AND逻辑,合并选项输出内容
-c<进程名> #列出指定进程所打开的文件
-g #列出GID号进程详情
-d<文件号> #列出占用该文件描述符的进程
+d<目录> #列出目录下被打开的文件
+D<目录> #递归列出目录下被打开的文件
-n<目录> #列出使用NFS的文件
-i<条件> #列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> #列出指定进程号所打开的文件
-u #列出UID号进程详情
-U #获取 UNIX 套接口地址
-t #列出进程
-h #显示帮助信息
-v #显示版本信息
2.2、内容含义
首先我们使用lsof | head 命令查看一下
[root@lgh ~]# lsof | head COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / init 1 root txt REG 253,0 150352 8519721 /sbin/init init 1 root mem REG 253,0 66432 1310749 /lib64/libnss_files-2.12.so init 1 root DEL REG 253,0 1310733 /lib64/libc-2.12.so init 1 root DEL REG 253,0 1310744 /lib64/libgcc_s-4.4.7-20120601.so.1.#prelink#.AXbpAw init 1 root DEL REG 253,0 1310761 /lib64/librt-2.12.so init 1 root DEL REG 253,0 1310757 /lib64/libpthread-2.12.so.#prelink#.6p24pv init 1 root DEL REG 253,0 1310783 /lib64/libdbus-1.so.3.4.0.#prelink#.M6wKKU
lsof -R +d /dev | head 命令查看一波(主要看FD这列),并且相比上面增加了PPID列
[root@mwpl003 ~]# lsof -R +d /dev | head COMMAND PID PPID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 0 root 0u CHR 1,3 0t0 4025 /dev/null init 1 0 root 1u CHR 1,3 0t0 4025 /dev/null init 1 0 root 2u CHR 1,3 0t0 4025 /dev/null udevd 1872 1 root 0u CHR 1,3 0t0 4025 /dev/null udevd 1872 1 root 1u CHR 1,3 0t0 4025 /dev/null udevd 1872 1 root 2u CHR 1,3 0t0 4025 /dev/null rserver 3375 1 rstudio-server 0u CHR 1,3 0t0 4025 /dev/null rserver 3375 1 rstudio-server 1u CHR 1,3 0t0 4025 /dev/null rserver 3375 1 rstudio-server 2u CHR 1,3 0t0 4025 /dev/null
每列的基本含义如下:
COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。
TYPE:文件类型
DEVICE:指定磁盘的名称
SIZE/OFF:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
其中FD文件描述符列表如下:
cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改 txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序 lnn:library references (AIX); er:FD information error (see NAME column); jld:jail directory (FreeBSD); ltx:shared library text (code and