rust-port-kill 2.1.0

A cross-platform command-line tool to manage listening ports and processes
# 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 等)

### 编译


```bash
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`

### 使用方法


#### 显示所有监听端口

```bash
rpk
```

#### 显示指定端口详细信息

```bash
# 显示端口 8080 的详细信息

rpk --port 8080

# 使用短命令

rpk -p 8080

# 显示调试信息

rpk -p 8080 --debug
```

#### 终止占用端口的进程

```bash
# 终止占用端口 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`: 显示版本信息

### 参数组合示例


```bash
# 查询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<DataCollector>> 模式实现线程安全的数据共享

### 网络支持

- **协议支持**: 完整支持 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

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

## 作者


- Everplus <everplus@163.com>