文档教程知识库【免费下载链接】reference⭕ Share quick reference cheat sheet for developers.项目地址https://gitcode.com/gh_mirrors/re/reference点击查看免费下载lsofList Open Files是 Linux/Unix 系统管理员排查端口占用、定位进程打开文件、诊断文件删除后仍被占用等问题的核心利器。本指南完整继承并扩展了 source/_posts/lsof.md 速查表中的全部命令用法从端口、进程、用户、网络、PID、文件名、目录等维度逐一讲解并结合本仓库Reference 开发者速查项目的文档结构与渲染机制帮助你在最短时间内掌握 lsof 的实战技能。快速开始认识 lsoflsof是ListSopenFiles 的缩写用于列出系统当前哪些进程打开了哪些文件。这里的“文件”是广义概念不仅包括普通磁盘文件还包括网络套接字TCP / UDP 连接与监听端口Unix 域套接字管道、设备文件、符号链接目录、共享库与动态加载的模块在 Unix 哲学中“一切皆文件”因此 lsof 的输出覆盖了进程与系统资源交互的几乎全部维度是排查“端口被谁占用”“文件为什么删不掉”“某个进程到底打开了哪些文件”这类问题的首选命令。基础调用方式如下$ lsof $ sudo lsof -u root直接运行lsof会列出当前系统所有进程打开的全部文件输出量极大一般配合 grep 或其他筛选参数使用sudo lsof -u root查看 root 用户打开的所有文件-u指定用户名或用户 ID由于部分进程的文件描述符对其他用户不可见排查系统级问题时通常需要sudo提升权限。lsof 的典型输出列依次为COMMAND进程名、PID进程号、USER属主用户、FD文件描述符如cwd当前目录、txt可执行文件、mem内存映射文件、u读写模式等、TYPE文件类型如REG普通文件、DIR目录、IPv4/IPv6网络连接、DEVICE设备号、SIZE/OFF大小或偏移量、NODEinode 号或协议、NAME文件名或连接端点。按端口查找定位端口占用者排查端口占用是 lsof 最常用的场景例如启动服务时报Address already in use即可用-i参数快速定位$ lsof -i :8080 $ lsof -i :80 -i :22 $ lsof -i TCP:22 $ lsof -i TCP:1-1024 $ lsof -i UDP $ lsof -i 192.168.1.5各参数含义与适用场景命令作用lsof -i :8080列出占用 8080 端口的所有连接包括 LISTEN 与 ESTABLISHED-i后跟冒号加端口号lsof -i :80 -i :22同时查询多个端口-i参数可重复出现逻辑为“或”关系lsof -i TCP:22只看 TCP 协议上 22 端口的连接协议限定可避免 UDP 等其他类型干扰lsof -i TCP:1-1024查看 TCP 端口区间 1~1024特权端口区上的所有连接-i支持端口范围语法lsof -i UDP列出所有 UDP 连接排查 DNS、NTP、DHCP 等 UDP 服务时很有用lsof -i 192.168.1.5按 IP 地址过滤后跟主机地址可查看与指定主机之间的所有网络连接-i参数后还可以组合协议与地址如lsof -i TCP192.168.1.5:80表示“与 192.168.1.5 的 80 端口之间的 TCP 连接”。对于 Nginx、Docker、Java 等常见服务端口占用排查lsof -i :端口号是最直接的一步。按进程名查找定位程序行为当你知道进程名但不确定其打开了哪些文件或端口时用-c按进程名command name筛选$ lsof -c mysql $ lsof -c java $ lsof -c ssh $ lsof -c nginx $ lsof -c ssh -c httpd-c后面跟进程名的开头字符串匹配进程 COMMAND 列因此-c java能匹配所有以 java 开头的 JVM 进程-c mysql匹配 mysqld 等以 mysql 开头的守护进程多个-c参数之间是“或”关系lsof -c ssh -c httpd同时列出 ssh 与 httpd 两类进程打开的文件如需精确匹配完整进程名可结合lsof | grep 完整名称或先pgrep拿到 PID 再配合-p使用。该参数常用于确认某服务是否加载了预期配置、连接了哪些数据库端口或在容器/多实例部署时快速区分同名进程。按用户查找查看指定用户的文件占用$ lsof -u www-data $ lsof -u www-data -u ubuntu $ lsof -i -u ^root # Except certain user-u指定用户名或 UIDlsof -u www-data列出 web 服务账号打开的所有文件多个-u之间为“或”关系可同时查看多个用户-u ^root中脱字符^表示“排除”该用户lsof -i -u ^root即“查看非 root 用户的所有网络连接”。^排除语法在-pPID、-c进程名等参数上同样适用。该用法在安全审计、判断哪个账号残留了异常连接如后门进程以普通用户运行时非常实用例如lsof -i -u ^root ^daemon可快速找出系统中非系统账号建立的网络连接。按网络协议族过滤IPv4 与 IPv6$ lsof -i 4 # IPv4 only $ lsof -i 6 # IPv6 onlylsof -i 4仅列出 IPv4 网络连接lsof -i 6仅列出 IPv6 连接当系统同时运行双栈服务时用这两个参数可分别确认各自的监听情况避免 IPv6 连接混杂在输出中干扰判断语法上-i 4中的数字属于协议族限定与-i TCP、-i UDP的协议限定可组合使用如lsof -i 4TCP:443查看 IPv4 上 443 端口的 TCP 连接。按 PID 查找指定进程打开的文件$ lsof -p 1753 $ lsof -p ^3 # Except certain pids-p后跟进程号精确查看某个 PID 打开的全部文件是定位“单个进程在干什么”的最细粒度手段lsof -p ^3排除 PID 为 3 的进程通常为内核线程在查看大量进程输出时排除干扰项与pgrep组合可动态获取 PIDlsof -p $(pgrep -f java.*app.jar)。典型场景服务响应异常时用-p查看该进程打开了哪些文件、连接了哪些远端地址或者在文件系统卸载失败device is busy时通过lsof D 挂载点找到持有文件的进程后再用-p深入确认。按文件名查找谁在占用这个文件$ lsof /var/log/messages $ lsof /etc/passwd直接在 lsof 后面跟文件路径即可列出所有打开了该文件的进程lsof /var/log/messages查看谁在写系统日志排查日志轮转logrotate时“文件被删但空间不释放”的经典问题lsof /etc/passwd查看哪些进程引用了该配置文件。结合ls -l看到的 inode还能用lsof L1列出“已删除但仍被进程占用”的文件——这正是磁盘空间莫名不释放、df显示已删文件仍占空间的根本原因所在。按目录查找目录及其子目录内的文件$ lsof D /var/log # Within a directoryD后跟目录路径递归列出该目录及其所有子目录中被进程打开的文件用于整目录维度排查如卸载挂载点、迁移数据目录前确认无进程占用注意D是递归模式输出可能较多若只需查看目录本身不含递归可省略D直接lsof /var/log。卸载磁盘时常见的报错target is busy用lsof D /mnt/data即可列出所有引用该目录下文件的进程配合kill或重启服务完成安全卸载。批量清理结合 kill 终止占用进程$ kill -9 lsof -t -u apache $ kill -9 $(lsof -t -i :8080)lsof -tterse是 lsof 的“静默输出”模式只打印 PID 列非常适合脚本化处理两条命令分别演示了反引号 与$()两种命令替换写法将lsof -t输出的 PID 列表直接作为kill的参数第一条lsof -t -u apache获取 apache 用户所有进程的 PID 并强制终止第二条lsof -t -i :8080获取占用 8080 端口的所有进程 PID 并强制终止——是 CI/CD 脚本和本地开发中“清端口”的标准写法。需要强调的是kill -9是强制信号会立即终止进程且不执行清理动作。生产环境建议先kill -15SIGTERM让进程优雅退出确认无效后再升级为-9执行前务必确认 PID 列表无误避免误杀关键服务。输出进阶其他常用参数一览除本速查表列出的用法外lsof 还提供以下高频参数可与上述选项自由组合参数作用-t只输出 PID便于脚本解析与管道处理-n不解析主机名直接显示 IP加快查询速度-P不将端口号转换为服务名直接显示数字端口-a多个条件之间改为“与”关系默认是“或”L1列出已删除但仍被进程占用的文件-sTCP:LISTEN仅显示处于 LISTEN 状态的 TCP 连接如lsof -i :80 -sTCP:LISTEN-i网络连接过滤端口、协议、地址、协议族组合示例lsof -iTCP:8080 -sTCP:LISTEN -nP表示“查看 8080 端口上处于监听状态的 TCP 连接不做域名与端口名解析”输出更快且更利于脚本比对。在本项目中的呈现方式本篇文章对应的速查表源码位于 source/_posts/lsof.md是 Reference面向开发者的速查表集合见 README.md中 “Linux Command” 分类下的一员。该文件采用 Hexo 博客引擎的 Front Matter 格式声明元信息title与intro为必填项tagsport / processes / utility与categoriesLinux Command用于站点分类聚合plugins: copyCode则启用了代码块一键复制能力。从渲染链路看文档正文会经由 themes/coo/scripts/markdown_plugin.js 中注册的 markdown-it 插件链处理markdown-it-highlightjs负责对shell script等语言块做语法高亮headerSections规则会自动将 H2/H3 标题包装为卡片式布局页面最终由 themes/coo/layout/note.ejs 模板渲染。而copyCode插件的实现位于 themes/coo/layout/_partial/scripts.ejs脚本会为页面中每个pre code代码块动态插入“复制”按钮点击后通过navigator.clipboard.writeText将代码块内容写入剪贴板并短暂显示对勾反馈——因此你在本文看到的所有lsof命令示例都可以在线上页面中一键复制直接使用。小结lsof 之所以成为系统排查的“瑞士军刀”在于它将“进程—文件—网络”三类资源在统一视图下打通。日常开发中最值得记住的三条命令$ lsof -i :端口号 # 端口被谁占用 $ lsof -p PID # 进程打开了什么 $ lsof -t -i :端口号 | xargs kill -9 # 脚本化清理占用进程配合-u、-c、D、-nP等参数自由组合即可覆盖从本地开发调试到生产环境排障的绝大多数场景。赞分享文档教程知识库【免费下载链接】reference⭕ Share quick reference cheat sheet for developers.项目地址https://gitcode.com/gh_mirrors/re/reference点击查看免费下载相关推荐Lsof 命令速查指南使用 Quick Reference 排查进程打开的文件与端口占用Lsof 命令速查指南使用 Quick Reference 排查进程打开的文件与端口占用 lsof List Open Files是 Linux/Unix文档教程lsof 命令速查指南Linux 下按端口、进程、用户定位打开文件lsof 命令速查指南Linux 下按端口、进程、用户定位打开文件 lsofList Open Files是 Linux 系统管理员与开发者的必备排障工具文档知识库教程开发工具SerenityOS lsof 命令完全指南列出进程打开文件的原理与实战SerenityOS lsof 命令完全指南列出进程打开文件的原理与实战 导读 lsof List Open Files是 SerenityOS 提供的进操作系统内核驱动上一篇LabelCloud简单高效的3D点云标注工具完全指南下一篇实战指南如何利用OptBinning实现最优分箱提升模型性能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考