当前位置:首页 > 技术 > 正文内容

Linux系统文件与进程监控工具 lsof 使用详解

访客 技术 2026年6月2日 1

lsof 命令概述

lsof(List Open Files)是 Linux 系统中一个强大的命令行工具,用于列出当前被进程打开的文件。在 Linux 中,"一切皆文件",因此该命令不仅可以查看普通文件的使用情况,还能显示目录、网络连接、设备、套接字等资源的占用状态。

常用语法格式

lsof [选项] [文件]

核心选项说明

  • -c <进程名>:显示指定进程名称所打开的所有文件。
  • +D <目录路径>:递归扫描并列出目录下所有被打开的文件。
  • -i [<条件>]:根据网络协议、端口或 IP 列出相关的网络连接进程。支持 IPv4、IPv6、TCP、UDP 等。
  • -n <路径>:列出使用 NFS 文件系统的文件信息(注意:此处 -n 实际常用于禁用主机名解析)。
  • -p <PID>:仅显示指定进程 ID 所打开的文件。
  • -u <用户名|UID>:列出特定用户或 UID 关联的所有打开文件。

输出字段解析

列名含义
COMMAND进程对应的程序名称
PID进程标识符
TID线程 ID(若存在)
USER进程所属用户
FD文件描述符类型
TYPE文件类型(如 REG、DIR、IPv4 等)
DEVICE设备编号
SIZE/OFF文件大小或偏移量
NODEinode 编号
NAME文件、目录或网络地址名称

文件描述符(FD)常见值

  • cwd:当前工作目录
  • rtd:根目录
  • txt:程序代码或共享库
  • 0, 1, 2:分别代表标准输入、输出和错误

文件类型(TYPE)常见值

  • REG:普通文件
  • DIR:目录
  • CHR:字符设备
  • BLK:块设备
  • UNIX:Unix 域套接字
  • FIFO:命名管道
  • IPv4/IPv6:网络套接字

典型应用场景与示例

1. 查看系统中所有已打开的文件

lsof | more

此命令会输出系统中所有正在使用的文件列表,通常输出较多,建议结合分页工具如 moreless 使用。

2. 查找访问特定文件的进程

lsof /usr/bin/bash

输出结果将显示所有正在使用 bash 可执行文件的进程,便于排查文件占用问题。

3. 递归检查某目录下的打开文件

lsof +D ~/.local/share/

该命令会深入遍历指定目录,列出所有被进程打开的子文件和子目录。

4. 通过 grep 模拟文件查找功能

lsof | grep "/home/xf/.local/share"

当不使用 +D 时,可通过管道配合 grep 实现对路径的模糊匹配,适用于复杂筛选场景。

5. 显示指定用户的文件活动

lsof -u xf

列出用户 xf 当前打开的所有文件及相关进程,帮助进行权限或资源审计。

6. 根据进程名或 PID 查看其文件使用情况

方法一:按进程名过滤

lsof -c sleep

方法二:结合 ps 与 lsof 按 PID 查询

ps aux | grep sleep
lsof -p 16071

先通过 ps 获取目标进程 PID,再用 lsof 查看其详细文件句柄信息。

7. 监控网络连接状态

列出所有网络连接:

lsof -i

仅显示 IPv4 连接:

lsof -i 4

查看特定端口的使用情况(如 SSH):

lsof -i :22

查看 TCP 协议的监听连接:

lsof -i tcp -s TCP:LISTEN

8. 检查 NFS 文件系统使用情况

lsof -n /home/xf

虽然 -n 主要作用是禁止 DNS 解析以加快输出速度,但结合路径参数可有效识别挂载点上的文件访问行为,尤其适合分析 NFS 共享目录。

标签: lsofLinux

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。