0%

lsof命令

卡农Canon——复调音乐的一种,原意为“规律”。一个声部的曲调自始至终追逐着另一声部,直到最后的一个小节,最后的一个和弦,融合在一起,给人以一个神圣的意境。卡农的所有声部虽然都模仿一个声部,但不同高度的声部依一定间隔进入,造成一种此起彼伏连绵不断的效果,轮唱也是一种卡农。在卡农中,最先出现的旋律是导句,以后模仿的是答句。卡农根据各声部高度不同的音程差,可分为同度卡农,五度卡农,四度卡农等;根据间隔的时间长短,可分为一小节卡农,两小节卡农等;此外还有伴奏卡农,转位卡农,逆行卡农,反行卡农等各种手法。

一、概念

  1. lsof(list open files)是一个列出当前系统打开文件的工具。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

  1. 语法lsof [option] [filename]

    • -a 列出打开文件存在的进程
    • -c<进程名> 列出指定进程所打开的文件
    • -g 列出GID号进程详情
    • -d<文件号> 列出占用该文件号的进程
    • +d<目录> 列出目录下被打开的文件
    • +D<目录> 递归列出目录下被打开的文件
    • -n<目录> 列出使用NFS的文件
    • -i<条件> 列出符合条件的进程,搜多条件可为IPV4/6地址、协议、:端口、 @ip等
    • -p<进程号> 列出指定进程号所打开的文件
    • -u 列出UID号进程详情
    • -h 显示帮助信息
    • -v 显示版本信息
  2. 常用参数选项

  3. 输出各列说明

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

二、实战

  1. 打开一个具体文件的进程 lsof /usr/local/nginx/sbin/nginx
  2. 列出一个目录下的进程,+D迭代,+d非迭代 lsof +D /usr/local/nginx1.15.12
  3. 以进程名称为开始字符的进程,使用-c参数 lsof -c 进程名 [-c 进程名...]
  4. 指定具体的某个用户的进程 lsof -u username
  5. 使用or/and组合命令
    • 默认or lsof -u app -c init
    • and加-a参数 lsof -u app -c init -a
  6. 使用-i参数列出所有的网络链接信息 lsof -i
  7. 通过具体的进程ID来显示正在使用的进程信息 lsof -i -p PID -a
  8. 通过使用-i:port来显具体端口进程信息 lsof -i:80
  9. 列出所有TCP和UDP连接 lsof -i tcp/udp
    • 列出指定范围内被打开的TCP端口 lsof -i tcp:1-1024
  10. 列出所有的网络文件系统的文件 lsof -N
  11. 列出IPv4或IPv6打开的文件 lsof -i4/i6
  12. 统计系统打开的文件总数 sudo lsof -P -n | wc -l
    • -P 选项表示不解析端口号
    • -n 选项表示不解析主机名
  13. 查看删除文件的进程是否结束lsof | grep deleted

三、参考

  1. 参考一
  2. 参考二