rust-port-kill-2.0.0 is not a library.
Rust Port Kill (rpk)
一个跨平台命令行工具,用于管理和监控系统中的监听端口和进程。支持 Windows、macOS 和 Linux。
功能特性
- 📊 端口监控: 显示所有监听端口的详细信息(TCP 和 UDP)
- 🔍 详细信息: 展示端口占用、应用程序、进程ID、完整启动参数等
- 📈 资源监控: 实时显示CPU和内存使用情况(与任务管理器一致)
- ⚡ 进程管理: 强制终止占用指定端口的进程
- 🔒 管理员权限: 自动请求管理员权限以确保完整功能
- 🎨 友好界面: 彩色输出和表格化显示
- 📝 启动参数: 获取真实的命令行启动参数(使用 sysinfo)
- ⚡ 高性能: 并发数据收集,快速响应
安装和使用
编译要求
- Rust 1.70+
- Windows: Visual Studio Build Tools 或 Microsoft Visual Studio (用于MSVC工具链)
- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux: 标准开发工具链(gcc, make 等)
编译
编译后的可执行文件位于:
- Windows:
target/release/rpk.exe - macOS/Linux:
target/release/rpk
使用方法
显示所有监听端口
显示指定端口详细信息
# 显示端口 8080 的详细信息
# 使用短命令
# 显示调试信息
终止占用端口的进程
# 终止占用端口 8080 的进程(需要确认)
# 使用短命令
输出示例
显示所有监听端口
┌───────────┬─────────────────┬────────┬───────────┬──────────┬───────────────────────────────────────────┐
│ 端口 │ 应用程序 │ 进程ID │ CPU使用率 │ 内存使用 │ 启动参数 │
├───────────┼─────────────────┼────────┼───────────┼──────────┼───────────────────────────────────────────┤
│ TCP:3000 │ node.exe │ 270204 │ 4.1% │ 58.8 MB │ node index │
├───────────┼─────────────────┼────────┼───────────┼──────────┼───────────────────────────────────────────┤
│ TCP:8080 │ java.exe │ 12345 │ 2.3% │ 256.5 MB │ java -jar app.jar │
└───────────┴─────────────────┴────────┴───────────┴──────────┴───────────────────────────────────────────┘
总结: 共发现 2 个监听端口
显示指定端口详细信息
端口: TCP://127.0.0.1:3000
状态: Listen
应用程序: node.exe
进程ID: 270204
资源: CPU: 4.1% | 内存: 58.8 MB
启动参数: node index
命令行选项
-p, --port <端口号>: 指定要查询的端口号-k, --kill: 强制终止占用指定端口的进程(需要与--port一起使用)-d, --debug: 显示调试信息,包括数据收集过程-h, --help: 显示帮助信息-V, --version: 显示版本信息
系统要求
- Windows: Windows 10 或更高版本
- macOS: macOS 10.13 或更高版本
- Linux: 主流发行版(Ubuntu, Debian, Fedora 等)
- 网络连接查询权限
权限管理:
- Windows: 程序会自动检测是否具有管理员权限,如果没有会提示用户提升权限
- macOS/Linux: 某些功能需要 root 权限,请使用
sudo运行
安全注意事项
- 程序会在启动时自动检测管理员权限,如果缺少权限会提示用户提升
- 使用
--kill选项前请谨慎确认,强制终止进程可能导致数据丢失 - 建议在生产环境中使用前先在测试环境验证
故障排除
常见问题
-
权限不足错误
- 确保以管理员身份运行命令提示符
- 检查UAC设置是否允许程序提升权限
-
无法获取某些进程信息
- 某些系统保护进程可能无法访问
- 确保防火墙没有阻止程序的网络访问
- 某些进程可能没有命令行参数(显示为
[PID: xxx - 无命令行参数])
-
编译错误
- 确保安装了正确版本的Rust工具链(Rust 1.70+)
- 检查是否安装了必要的Windows SDK
- 确保
winapi相关的依赖正确安装
-
CPU使用率显示异常
- CPU使用率通过两次采样计算(间隔500ms),首次运行可能需要等待
- 显示的值已除以CPU核心数,与任务管理器一致
-
内存使用量显示
- 显示的是进程的私有内存使用量(Private Usage),与任务管理器的"内存(专用工作集)"接近
技术实现
- 使用 Rust 语言开发
- 网络信息: 使用
netstat2crate 获取网络连接信息(跨平台) - 进程信息: 使用
sysinfocrate 获取进程名称、命令行、CPU使用率等(跨平台) - 内存信息:
- Windows: 使用 Windows API (
GetProcessMemoryInfo) 获取准确的私有内存使用量 - macOS/Linux: 使用
sysinfocrate 获取内存信息
- Windows: 使用 Windows API (
- CPU使用率: 通过两次采样计算,并除以CPU核心数以匹配系统任务管理器显示
- 支持TCP和UDP协议
- 并发数据收集,提高性能
- 权限管理:
- Windows: 使用
is_elevatedcrate 检测和自动提升权限 - macOS/Linux: 使用
is_elevatedcrate 检测权限,提示用户使用sudo
- Windows: 使用
- 进程终止:
- Windows: 使用
taskkill命令 - macOS/Linux: 使用
kill -9命令
- Windows: 使用
作者
- Everplus everplus@163.com