shell命令lsof

时间:2024-11-15 09:04:43

PREFACE

  linux一切皆是文件,共有7中文件类型

    1、普通文件(regular file)

    2、目录文件(directory file)

    3、块特殊文件(block special file)

    4、字符特殊文件(character special file)

    5、FIFO

    6、套接字(socket)

    7、符号链接(symbolic link)

NAME

  lsof - list open file

OPTIONS 

  没有选项
    活跃进程的所有打开文件

  '^'(negated) 否定

    lsof -u ^root # 非root用户打开的所有文件

  -a AND 对选项进行AND,默认或
    lsof -a -u root -U # 属于root用户的UNIX socket

  -c 指定进程所打开的文件
    lsof -c nginx

  -d 指定FD
    lsof -d "0,1,2"

  -i 监听指定的协议,端口,主机等网络信息,[46][protocol][@hostname|hostaddr][:service|port]

    lsof -i 4|6

    lsof -i tcp|udp

    lsof -i @192.168.0.2

    lsof -i :ssh, lsof -i :22

    lsof -i 4tcp@172.18.2.187:22

  -l 用户名转换为用户ID

  -N NFS文件

  -p pid

  +|-r 重复输出 默认15秒

    -r 遇到中断信号退出

      lsof -d 1 -r 2

    +r 直到没有打开的文件退出

  -s [p:s]

    lsof -i -sTCP:LISTEN

  -t 打印进程号

    lsof -c nginx -t

  -u 某个用户所属打开的文件

    lsof -u www

  -U UNIX domain socket files

OUTPUT  # 只说明默认output columns,有些column输出需要加参数

  COMMAND:进程的名称
  PID :进程标识符
  USER:进程所有者
  FD:文件描述符
  TYPE:文件类型
  DEVICE:磁盘号
  SIZE:文件的大小
  NODE:索引节点
  NAME:文件的名字