博客
关于我
Linux 命令 —— lsof 查看打开的文件信息
阅读量:803 次
发布时间:2023-02-01

本文共 1799 字,大约阅读时间需要 5 分钟。

lsof(List Open Files)是一个用于列出系统中当前打开文件的工具。它能够显示进程打开的文件、文件所属的进程、文件的端口(包括TCP和UDP)、以及帮助恢复删除的文件等功能。在Linux环境下,所有资源都以文件形式存在,包括网络连接和硬件设备。这些资源通过文件描述符与应用程序和操作系统进行交互,因此,查看文件描述符列表对于系统监控和故障排除具有重要意义。使用lsof命令前,需要确保具有root权限,因为它需要访问核心内存和文件系统。

命令格式

lsof [参数] [文件]

命令参数

  • -a:列出所有打开文件的进程
  • -c:指定进程名,列出该进程打开的文件
  • -g:指定组ID,列出该组ID进程打开的文件
  • -d:指定文件描述符ID,列出占用该文件描述符的进程
  • -D:递归列出指定目录下被打开的文件
  • -+D:递归列出指定目录下被打开的文件(与-D功能相同)
  • -n:列出使用NFS文件系统的文件
  • -i:列出符合特定条件的进程(如协议、端口、IP地址)
  • -p:指定进程号,列出该进程号打开的文件
  • -u:指定用户ID,列出该用户ID进程打开的文件
  • -h:显示帮助信息
  • -v:显示版本信息

输出项含义

命令输出包括以下信息:

  • COMMAND:进程名称
  • PID:进程标识符
  • PPID:父进程标识符(需要指定-R参数)
  • USER:进程所有者
  • PGID:进程所属组ID
  • FD:文件描述符
    • cwd:当前工作目录
    • txt:程序二进制文件或共享库
    • er:文件描述符信息错误
    • ltx:共享库文本部分
    • mem:内存映射文件
    • pd:父目录
    • rtd:根目录
    • tr:内核跟踪文件(OpenBSD)
  • 文件状态模式(如urw等)
  • 文件锁信息
  • 文件类型(如DIRCHRBLK等)
  • 文件设备号、文件大小、节点ID
  • 文件名称

应用实例

查看所有打开文件

lsof

输出显示系统启动时打开的文件列表,包括/init/lib64/libnss_files-2.12.so等。

查看特定文件的进程

lsof /usr/bin/nginx

输出显示进程nginx打开的文件,包括/usr/local/nginx/sbin/nginx

递归查看目录下文件

lsof +D /opt/gogs/

输出显示/opt/gogs目录下所有被打开的文件,包括/opt/gogs/log/xorm.log

查看指定进程号的文件

lsof -p 9876

输出显示进程9876打开的所有文件,包括/bin/bash/usr/lib/locale/locale-archive

查看指定进程名的文件

lsof -c gogs

输出显示进程gogs打开的所有文件,包括/opt/gogs/gogs/lib64/libfreebl3.so

查看指定用户的文件

lsof -u upfor

输出显示用户upfor打开的所有文件,包括/sshd/usr/sbin/sshd

排除指定用户的文件

lsof -u ^root,^upfor /opt/gogs/gogs

输出显示/opt/gogs/gogs文件的所有打开者,排除了rootupfor用户。

查看多个进程号的文件

lsof -p 9183,26655

输出显示进程918326655打开的文件,包括/home/upfor/.nvm/versions/node/v9.7.1/bin/node/usr/local/nginx/sbin/nginx

排除指定进程号的文件

lsof -p ^9183,^26655

输出显示系统中除918326655进程外的所有文件。

查看网络连接

lsof -i

输出显示系统中所有网络连接信息,包括TCP和UDP端口。

查看特定协议的连接

lsof -i tcp

输出显示所有TCP网络连接信息。

查看特定端口的连接

lsof -i :80

输出显示使用TCP端口80的所有进程。

查看用户的网络端口

lsof -a -u upfor -i

输出显示用户upfor打开的所有活跃网络端口。

查看网络文件系统

lsof -N

输出显示系统中所有网络文件系统信息。

查看指定用户组的文件

lsof -g 501

输出显示用户组ID为501的所有文件。

通过合理使用lsof命令,可以有效监控系统中文件和进程的状态,快速定位问题并进行处理。

转载地址:http://wawfk.baihongyu.com/

你可能感兴趣的文章
OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
查看>>
Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
查看>>
opencv 模板匹配, 已解决模板过大程序不工作的bug
查看>>
OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
查看>>
opencv&Python——多种边缘检测
查看>>
opencv&python——高通滤波器和低通滤波器
查看>>
OpenCV+Python识别车牌和字符分割的实现
查看>>
OpenCV-Python接口、cv和cv2的性能比较
查看>>
OpenCV/Python/dlib眨眼检测
查看>>
opencv1-加载、修改、保存图像
查看>>
opencv10-形态学操作
查看>>
opencv11-提取水平直线和垂直直线
查看>>
opencv12-图像金字塔
查看>>
opencv13-基本阈值操作
查看>>
opencv14-自定义线性滤波
查看>>
opencv15-边缘处理
查看>>
opencv16-Sobel算子
查看>>
opencv17-laplance算子
查看>>
opencv18-canny检测算法
查看>>
opencv19-霍夫直线变化
查看>>