lsoff:跨平台端口占用查询与清理工具

lsoff 是一款基于 Go 语言开发的命令行(CLI)和文本用户界面(TUI)工具,专为在 Windows、Linux 和 macOS 上快速排查端口占用问题而设计。它被视为专注于端口的 lsof 替代品,能够直接读取系统底层 API,无需依赖外部命令(如 netstat 或 ss),提供极速的进程定位、搜索及终止功能。

lsoff:跨平台端口占用查询与清理工具插图

核心功能

  • 🚀 零依赖原生实现:
    • Linux:直接解析 /proc/net/ 和 /proc/<pid>/ 文件。
    • macOS:调用 libproc 和 sysctl。
    • Windows:使用 IP Helper API 及 NtQueryInformationProcess。
    • 不依赖 lsof、ss 或 netstat,启动速度极快且输出稳定。
  • 🖥️ 交互式 TUI 界面:
    • 支持键盘导航(Vim 风格 j/k)、鼠标点击、列排序及实时搜索。
    • 自动折叠同一 PID 的多套接字(IPv4/IPv6),保持界面整洁。
    • 颜色区分协议(TCP 绿色,UDP 琥珀色)。
  • 🔍 强大的搜索与过滤:
    • 支持按端口、PID、进程名、路径、命令行参数甚至项目名进行搜索。
    • 支持空格分隔的 AND 逻辑查询(如 -q "node 8080")。
    • 支持 JSON 格式输出,便于脚本集成。
  • ⚡ 安全进程终止:
    • 内置确认机制,防止误杀。
    • 防 PID 复用保护:在终止前验证进程创建时间或句柄,确保杀死的是目标进程而非新复用的 PID(Linux 使用 pidfd_open,Windows 检查 CreationTime)。
    • Unix 系统采用“先 SIGTERM,后 SIGKILL”的优雅终止策略。

快速用法

# 启动 TUI 界面(默认)
lsoff

# 查询特定端口占用的进程
lsoff 8080

# 按进程名或路径搜索
lsoff nginx

# 组合搜索(AND 逻辑)
lsoff -q "node 8080"

# 仅查看 TCP 或 UDP
lsoff -t       # TCP
lsoff -u 53    # UDP 端口 53

# 终止占用端口的进程(带确认)
lsoff -k 8080

# 强制终止(跳过确认,适合管道操作)
lsoff -k -y 8080

# 输出 JSON 格式
lsoff --json nginx

TUI 快捷键指南

按键功能
/ 或 Ctrl+f打开搜索框(支持空格 AND 逻辑)
j / k / ↑ / ↓上下移动选择
Enter / Space展开/折叠同一 PID 的套接字详情
s / S切换排序列 / 切换升序降序
x终止选中进程(需二次确认 y/n)
a开启每 2 秒自动刷新
y复制选中的 addr:port
r手动重新加载数据
q退出程序

技术细节与限制

  • 权限要求:若未以 root/Administrator 运行,部分进程的详细信息(如完整命令行、工作目录)可能无法获取。
  • macOS 原子性:由于 macOS 缺乏类似 Linux pidfd 的机制,终止操作存在极微小的 PID 复用窗口期,但工具已通过检查 pbi_start_tvsec 尽量降低风险。
  • Windows WOW64:32 位版本的 lsoff 无法获取 64 位进程的完整命令行信息。
  • UDP 状态:UDP 无 LISTEN 状态,工具会显示绑定到端口且无远程对端的套接字。

下载地址
夸克
密码:无