简介:

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件(来源百度百科)。


lsof在查找进程占用的那些文件或pid号由那些文件发起的等方面作用很大;尤其在Linux系统被黑后的溯源工作上绝对可以称之为一个重量级的命令。


格式详解:

[root@freeboy ~]# lsof -c httpd | head -5
COMMAND  PID   USER   FD   TYPE  DEVICE SIZE/OFF    NODE NAME
httpd   6083   root  cwd    DIR     8,2     4096       2 /
httpd   6083   root  rtd    DIR     8,2     4096       2 /
httpd   6083   root  txt    REG     8,3   355232  136356 /usr/sbin/httpd
httpd   6083   root  mem    REG     8,3    83088  667789 /usr/lib64/php/modules/zip.so


lsof输出各列信息的意义如下: 

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称


常用参数:

NAME
       lsof - list open files
SYNOPSIS
       lsof [ -?abChlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i]
       ] [ -k k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [  -u  s  ]  [
       +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]



lsof dirname//查看哪些用户打开了这个目录

lsof -u username     //查看用户打开了哪些文件

lsof -g gid//查看归属gid的进程情况

lsof -i:22//查看22端口由哪些进程发起

lsof -c httpd// 查看httpd进程打开了哪些文件

lsof -p 22166 // 查看进程号为22166的进程打开了哪些文件