rust-port-kill

Crates.iorust-port-kill
lib.rsrust-port-kill
version2.2.0
created_at2025-12-01 19:03:37.833352+00
updated_at2025-12-22 04:09:53.499966+00
descriptionA cross-platform command-line tool to manage listening ports and processes
homepage
repository
max_upload_size
id1960401
size105,083
Charles Chu (everplus)

documentation

README

Rust Port Kill (rpk)

一个跨平台命令行工具,用于管理和监控系统中的监听端口和进程。支持 Windows、macOS 和 Linux。

功能特性

  • 📊 端口监控: 显示所有监听端口的详细信息(TCP 和 UDP)
  • 🔍 详细信息: 展示端口占用、应用程序、进程ID、完整启动参数、监听IP地址等
  • 📈 资源监控: 实时显示CPU和内存使用情况(与任务管理器一致)
  • 进程管理: 强制终止占用指定端口的进程,支持单条确认和批量操作
  • 🎯 智能检查: 终止前自动检查进程是否存在,避免无效操作
  • 🔒 管理员权限: 自动请求管理员权限以确保完整功能
  • 🎨 友好界面: 彩色输出和表格化显示,支持文本自动换行
  • 📝 启动参数: 获取真实的命令行启动参数(sysinfo + WMI双重补充)
  • 🌐 IPv6支持: 完整支持IPv4和IPv6地址解析和显示
  • 高性能: 并发数据收集,快速响应,统一数据源确保一致性
  • 🛠️ 多协议支持: 支持TCP和UDP协议查询和管理
  • 🔧 交互式操作: 提供丰富的用户交互选项(y/N/q/A/L)

安装和使用

编译要求

  • Rust 1.70+
  • Windows: Visual Studio Build Tools 或 Microsoft Visual Studio (用于MSVC工具链)
  • macOS: Xcode Command Line Tools (xcode-select --install)
  • Linux: 标准开发工具链(gcc, make 等)

编译

git clone https://github.com/yourusername/rust-port-kill.git
cd rust-port-kill
cargo build --release

编译后的可执行文件位于:

  • Windows: target/release/rpk.exe
  • macOS/Linux: target/release/rpk

使用方法

显示所有监听端口

rpk

显示指定端口详细信息

# 显示端口 8080 的详细信息
rpk --port 8080

# 使用短命令
rpk -p 8080

# 显示调试信息
rpk -p 8080 --debug

终止占用端口的进程

# 终止占用端口 8080 的进程(需要确认)
rpk --port 8080 --kill

# 使用短命令
rpk -p 8080 -k

# 查询UDP端口
rpk --port 53 --udp

# 终止UDP端口进程
rpk -p 53 -u -k

交互式选项

在终止进程时,系统会提供以下选项:

  • y/yes: 确认终止当前进程
  • n/no: 跳过当前进程,继续下一个
  • q/quit: 停止所有操作
  • a/all: 批量终止所有匹配进程(逐个显示处理过程)
  • l/list: 显示剩余待终止进程列表

输出示例

显示所有监听端口

┌───────────┬────────────────────┬──────────┬────────┬───────────┬──────────┬─────────────────────────────────────┐
│ 端口      │ 监听IP             │ 应用程序 │ 进程ID │ CPU使用率 │ 内存使用 │ 启动参数                               │
├───────────┼────────────────────┼──────────┼────────┼───────────┼──────────┼─────────────────────────────────────┤
│ TCP:3000  │ 127.0.0.1          │ node.exe │ 270204 │      4.1% │  58.8 MB │ node index                             │
├───────────┼────────────────────┼──────────┼────────┼───────────┼──────────┼─────────────────────────────────────┤
│ TCP:8080  │ 0.0.0.0            │ java.exe │ 12345  │      2.3% │ 256.5 MB │ java -jar app.jar                      │
├───────────┼────────────────────┼──────────┼────────┼───────────┼──────────┼─────────────────────────────────────┤
│ TCP:443   │ ::1                │ nginx.exe│ 67890  │      0.8% │  12.3 MB │ nginx.exe -c nginx.conf               │
│           │                    │          │        │           │          │                                        │
└───────────┴────────────────────┴──────────┴────────┴───────────┴──────────┴─────────────────────────────────────┘

共发现 3 个监听端口

显示指定端口详细信息

找到 查询端口 8080 的TCP监听记录:
┌──────────┬────────────────────┬──────────┬────────┬───────────┬──────────┬────────────┐
│ 端口     │ 监听IP             │ 应用程序 │ 进程ID │ CPU使用率 │ 内存使用 │ 启动参数   │
├──────────┼────────────────────┼──────────┼────────┼───────────┼──────────┼────────────┤
│ TCP:8080 │ 0.0.0.0            │ java.exe │ 12345  │      2.3% │ 256.5 MB │ java -jar  │
│          │                    │          │        │           │          │ app.jar    │
└──────────┴────────────────────┴──────────┴────────┴───────────┴──────────┴────────────┘

共发现 1 个监听记录

命令行选项

  • -p, --port <端口号>: 指定要查询的端口号
  • -k, --kill: 强制终止占用指定端口的进程(需要与--port一起使用)
  • -u, --udp: 查询UDP端口(默认查询TCP端口)
  • -d, --debug: 显示调试信息,包括数据收集过程
  • -h, --help: 显示帮助信息
  • -V, --version: 显示版本信息

参数组合示例

# 查询TCP端口
rpk -p 8080

# 查询UDP端口
rpk -p 53 -u

# 终止TCP端口进程
rpk -p 8080 -k

# 终止UDP端口进程
rpk -p 53 -u -k

# 显示调试信息
rpk --debug

# 查询端口并显示调试信息
rpk -p 8080 --debug

系统要求

  • Windows: Windows 10 或更高版本
  • macOS: macOS 10.13 或更高版本
  • Linux: 主流发行版(Ubuntu, Debian, Fedora 等)
  • 网络连接查询权限

权限管理:

  • Windows: 程序会自动检测是否具有管理员权限,如果没有会提示用户提升权限
  • macOS/Linux: 某些功能需要 root 权限,请使用 sudo 运行

安全注意事项

  • 程序会在启动时自动检测管理员权限,如果缺少权限会提示用户提升
  • 使用 --kill 选项前请谨慎确认,强制终止进程可能导致数据丢失
  • 建议在生产环境中使用前先在测试环境验证

故障排除

常见问题

  1. 权限不足错误

    • 确保以管理员身份运行命令提示符
    • 检查UAC设置是否允许程序提升权限
  2. 无法获取某些进程信息

    • 某些系统保护进程可能无法访问
    • 确保防火墙没有阻止程序的网络访问
    • 某些进程可能没有命令行参数(显示为 [PID: xxx - 无命令行参数]
  3. 编译错误

    • 确保安装了正确版本的Rust工具链(Rust 1.70+)
    • 检查是否安装了必要的Windows SDK
    • 确保 winapi 相关的依赖正确安装
  4. CPU使用率显示异常

    • CPU使用率通过两次采样计算(间隔500ms),首次运行可能需要等待
    • 显示的值已除以CPU核心数,与任务管理器一致
  5. 内存使用量显示

    • 显示的是进程的私有内存使用量(Private Usage),与任务管理器的"内存(专用工作集)"接近

技术实现

核心架构

  • 使用 Rust 语言开发,版本 2.0.1
  • 统一数据收集: 并发数据收集架构,确保数据一致性和高性能
  • 跨平台设计: 支持 Windows、macOS、Linux 三大平台

数据收集模块

  • 网络信息: 使用 netstat2 crate 获取网络连接信息(TCP/UDP)
  • 进程信息: 使用 sysinfo crate 获取进程信息(跨平台)
  • 命令行参数:
    • Windows: 使用 WMI + sysinfo 双重补充机制,确保完整获取
    • macOS/Linux: 使用 sysinfo crate 获取命令行参数
  • 进程状态: 使用 sysinfo 进行跨平台进程存在性检查

内存和性能监控

  • 内存信息:
    • Windows: 使用 Windows API (GetProcessMemoryInfo) 获取私有内存使用量
    • macOS/Linux: 使用 sysinfo crate 获取内存信息
  • CPU使用率: 通过两次采样计算,除以CPU核心数以匹配任务管理器显示
  • 并发处理: 使用 Arc<Mutex> 模式实现线程安全的数据共享

网络支持

  • 协议支持: 完整支持 TCP 和 UDP 协议
  • 地址支持: 完整支持 IPv4 和 IPv6 地址解析
  • IP显示: 自动提取和显示监听IP地址,支持长地址自动换行

用户界面

  • 表格显示: 使用 tabled crate 实现美观的表格输出
  • 文本处理: 使用 textwrap crate 支持长文本自动换行
  • 彩色输出: 使用 colored crate 提供彩色终端输出

系统集成

  • 权限管理:
    • Windows: 使用 is_elevated crate 检测和自动提升权限
    • macOS/Linux: 使用 is_elevated crate 检测权限,提示用户使用 sudo
  • 进程终止:
    • Windows: 使用 taskkill 命令,支持UTF-8编码
    • macOS/Linux: 使用 kill -9 命令
  • 字符编码: Windows 下自动设置 UTF-8 代码页,确保中文显示正常

主要依赖

  • netstat2: 网络连接信息
  • sysinfo: 系统进程信息
  • wmi (Windows): Windows Management Instrumentation
  • tabled: 表格显示
  • textwrap: 文本换行
  • colored: 彩色输出
  • clap: 命令行参数解析
  • anyhow: 错误处理

版本历史

v2.0.1 (2025-12)

  • 新增 UDP 支持: 添加 --udp/-u 参数,支持查询和管理UDP端口
  • 🔧 智能批量终止: 优化批量终止逻辑,逐个展示表格和操作结果
  • 🎯 进程存在性检查: 终止前自动检查进程是否存在,避免无效操作
  • 🌐 统一数据收集: 重构数据收集架构,确保全列表和端口特定模式数据一致性
  • 📝 命令行参数优化: Windows 下 WMI + sysinfo 双重补充,提升参数获取完整性
  • 🧹 代码质量提升: 移除未使用代码,修复所有编译警告
  • 🎨 界面改进: 优化表格显示和用户体验

v2.0.0

  • 🚀 架构重构: 实现并发数据收集,大幅提升性能
  • 🌐 IPv6 支持: 完整支持 IPv6 地址解析和显示
  • 📊 表格显示: 重构为表格化输出,支持长文本自动换行
  • 💻 字符编码修复: 解决 Windows 下中文乱码问题

v1.0.1

  • 🐛 Bug修复: 修复权限检查和内存显示问题

v1.0.0

  • 🎉 初始发布: 基础端口监控和进程管理功能

作者

Commit count: 0

cargo fmt