Linux命令-lsof(列出所有进程打开的所有资源)

🧭说明

lsof 是一个功能极其强大的 Linux 诊断工具,全称是 Li st O pen F iles。在 Linux 中"一切皆文件",因此它可以列出所有进程打开的所有资源,包括普通文件、目录、网络连接、管道、设备等。

🎯 核心功能与常用示例

掌握以下几个最常用的命令格式,可以解决绝大多数问题。

场景 命令示例 作用说明
1. 查看端口占用 sudo lsof -i :8080 查看谁占用了 8080 端口。
2. 查看进程打开的文件 sudo lsof -p 1234 查看 PID 为 1234 的进程打开了哪些文件。
3. 查看文件被谁占用 sudo lsof /path/to/file 查看某个具体文件或目录被哪些进程使用。
4. 查看用户打开的资源 sudo lsof -u username 查看指定用户打开的所有文件。
5. 查看网络连接 sudo lsof -i 列出所有网络连接(类似 netstat)。可配合 -iTCP 或 -iUDP 指定协议。
6. 查看命令打开的文件 sudo lsof -c sshd 查看所有 sshd 进程打开的文件。

📊 解读输出信息

lsof 的输出信息量很大,理解各列含义是关键。以下是几个核心列:

列名 说明
COMMAND 进程的名称。
PID 进程的 ID。
USER 进程所有者的用户名。
FD 文件描述符 ,是关键信息。常见值:cwd(当前目录)、txt(程序代码)、mem(内存映射文件)、数字(如 0u 标准输入,1u 标准输出,2u 标准错误),3u 等为其他文件。
TYPE 文件类型,如 REG(普通文件)、DIR(目录)、IPv4(IPv4 网络套接字)。
DEVICE 设备号。
SIZE/OFF 文件大小或偏移量。
NODE 文件的 Inode 号。
NAME 文件或网络连接的具体路径、地址和端口。

⚙️ 进阶组合技巧

lsof 可以与其他命令组合,实现更精确的查询。

  1. 组合查询 :选项可以叠加使用。例如,查看用户 nginx 的所有 TCP 网络连接:

    bash 复制代码
    sudo lsof -u nginx -iTCP
  2. 杀死占用进程 :结合 kill 命令,强制释放被占用的资源(请谨慎操作)。

    bash 复制代码
    sudo kill -9 $(sudo lsof -t -i :3000)

    -t 选项仅输出 PID,方便管道传递。

  3. 查找已删除但未释放的文件 :当磁盘空间不足,但 df 和 du 结果不一致时,可能是某个大文件被进程锁定并删除。此时文件在文件系统中不可见,但进程仍持有其句柄,空间未被释放。

    bash 复制代码
    sudo lsof | grep deleted

    找到对应的 PID 和 FD,重启该进程即可释放空间。

⚠️ 重要注意事项

  • 权限 :lsof 需要足够的权限才能查看所有信息,因此查询系统级信息时通常需要 sudo。
  • 输出量 :直接运行 lsof 会列出所有信息,输出可能非常冗长。务必结合上述选项进行过滤。
  • 网络状态 :-i 选项输出的连接状态与 netstat 类似,如 LISTEN(监听)、ESTABLISHED(已建立)。

lsof 是系统管理和故障排查的"瑞士军刀"。当遇到"文件被占用无法删除"、"端口冲突"或"磁盘空间神秘消失"等问题时,它通常是解决问题的第一步。

相关推荐
Rabitebla23 分钟前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
火云代理29 分钟前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
威嵌神州1 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
火云代理4 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖5 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump5 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风6 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府7 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT7 小时前
【RHCA+】IO调度算法
linux·服务器
wacsii8 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器