# SCNET_Restart_Tool **Repository Path**: yylmzxc/SCNET_Restart_Tool ## Basic Information - **Project Name**: SCNET_Restart_Tool - **Description**: SCNET_Restart_Tool - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: web-x25.01.17-remaste - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-25 - **Last Updated**: 2025-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SCNET_Restart_Tool ## 项目简介 SCNET_Restart_Tool 是一款专为 SCNET 服务端程序(如生存战争服务器)设计的高级监控与自动重启工具。该工具通过实时监控服务运行状态,提供多种智能重启机制和远程控制功能,确保服务端程序持续稳定运行,最大限度减少人工干预,提高服务可用性和运维效率。 ![主界面预览](Res/index.png) ## 核心功能特性 ### 多服务器管理 - 支持同时配置和管理多个服务端实例 - 每个服务器可独立设置监控参数和重启策略 - 直观的列表界面展示所有服务器运行状态和基本信息 ### 智能故障检测与自动重启 - 实时监控指定服务进程状态,支持进程名+路径双重验证机制 - 服务意外终止时自动执行重启操作,确保服务连续性 - 内置智能重试机制,应对启动失败的情况 - 详细的操作日志记录,便于问题追溯和系统分析 ### 灵活的重启计划策略 - **定时计划重启**:支持设置每日固定时间点自动重启服务 - **间隔周期重启**:可按设定的时间间隔(小时)自动重启服务 - 重启前可发送优雅关闭指令,确保服务正常终止 - 重启倒计时提示,便于用户了解系统状态变更 ### 远程命令控制系统 - 提供 TCP 协议接口,可远程向服务端发送自定义命令 - 支持命令发送前的密码验证,保障系统安全性 - 实时显示命令执行结果,便于远程操作监控 ### 便捷的文件夹管理 - 集成服务器相关文件夹快速访问功能 - 支持直接打开配置、日志、插件、模组、纹理、世界等常用文件夹 - 提供图标化的文件夹操作界面,提高管理效率 ### 完善的日志系统 - 实时记录所有操作和状态变更 - 支持日志文件保存,便于后期查阅和分析 - 可自定义日志保存路径和记录级别 ### 程序自检与权限管理 - 自动检测管理员权限,确保程序正常运行 - 提供权限提升选项,避免因权限不足导致功能受限 ### 跨平台支持 - Windows 版本:提供友好的图形用户界面,操作简便直观 - Linux 版本:命令行界面,适合服务器环境后台运行 ## 技术架构 ### 开发技术栈 - **开发语言**:C# - **框架**:.NET 9.0 (Windows版) / .NET 8.0 (Linux版) - **GUI框架**:Windows Forms (Windows版) - **网络通信**:Socket TCP/IP - **进程管理**:System.Diagnostics、WMI - **配置管理**:XML配置文件序列化 - **日志系统**:自定义 LogManager 组件 ### 主要组件说明 1. **ToolMain.cs** (`界面/Main/`) - Windows 版的主窗体界面和核心逻辑 - 管理多个服务器配置和监控器实例 - 处理用户交互、配置管理和功能调度 2. **ServerMonitor.cs** - 服务器监控的核心组件 - 实现进程监控、自动重启、定时任务等功能 - 提供进程检测、启动、停止和命令发送接口 3. **ServerConfig.cs** - 服务器配置的数据结构定义 - 包含服务器基本信息、监控参数和运行状态 - 提供服务器相关文件夹路径的便捷访问方法 4. **LogManager.cs** - 日志管理组件,采用单例模式设计 - 支持实时日志显示和文件保存功能 - 支持不同日志级别(信息、警告、错误、调试)的区分处理 5. **ServerStatus.cs** - 服务器状态枚举和状态管理类 - 定义服务器运行的各种状态及其转换逻辑 6. **FolderManagerForm.cs** (`界面/FolderManagerCode/`) - 文件夹管理界面和操作逻辑 - 提供服务器相关文件夹的快速访问功能 7. **SettingsForm.cs** (`界面/Settings/`) - 程序全局设置界面 - 允许用户配置日志、权限等全局选项 ## 安装与配置 ### 系统要求 - **Windows 版**:Windows 10/11,安装 .NET 9.0 Runtime 或更高版本 - **Linux 版**:支持 .NET 8.0 的 Linux 发行版(如 Ubuntu 22.04+, CentOS 9+ 等) - **硬件要求**:最小系统资源(CPU: 1GHz+, 内存: 512MB+) ### Windows 版安装步骤 1. 确保系统已安装 .NET 9.0 Runtime 或更高版本 2. 下载编译好的可执行文件或使用 Visual Studio 编译源代码 3. 直接运行可执行文件或创建快捷方式以便访问 4. 首次运行程序时,系统会自动检查管理员权限,确保程序正常运行 ### Linux 版安装步骤 1. 确保系统已安装 .NET 8.0 Runtime 2. 下载编译好的 Linux 版本可执行文件或从源代码编译 3. 授予可执行权限并通过命令行运行 4. 根据提示配置监控选项、重启间隔等参数 ## 配置指南 ### 服务器基本配置 1. 在主界面点击「添加服务器」按钮 2. 填写服务器名称、服务器程序路径和进程名 3. 设置监控参数:检测间隔、重启超时时间等 4. 配置重启策略:定时重启或间隔重启 5. 保存配置设置 ### 远程命令设置 1. 在服务器配置中启用远程命令功能 2. 设置通信端口和访问密码 3. 配置允许的命令列表 4. 保存设置并应用 ### 全局设置 1. 点击「设置」按钮进入全局设置界面 2. 配置日志保存路径和记录级别 3. 设置程序启动选项(如开机自启) 4. 配置界面主题和显示选项 ## 使用指南 ### 基本操作流程 1. **添加服务器**:点击「添加服务器」按钮,填写服务器信息 2. **启动监控**:选择已配置的服务器,点击「开始监控」按钮 3. **查看状态**:在主界面实时查看服务器运行状态和日志 4. **远程控制**:使用远程命令功能发送指令到服务器 5. **管理文件夹**:点击「文件夹管理」按钮,快速访问服务器相关目录 ### 定时重启设置 1. 选择要配置的服务器 2. 启用「定时重启」功能 3. 设置每日重启时间点(可设置多个) 4. 配置重启前是否发送关闭指令及等待时间 ### 间隔重启设置 1. 选择要配置的服务器 2. 启用「间隔重启」功能 3. 设置重启间隔时间(小时) 4. 配置重启前的准备操作 ### 查看日志 1. 点击主界面上的「日志」标签页 2. 查看实时日志记录 3. 可按日志级别筛选显示内容 4. 点击「导出日志」按钮保存日志文件 ## 项目结构 ``` SCNET_Restart_Tool/ ├── 界面/ # 用户界面相关代码 │ ├── About/ # 关于对话框 │ ├── FolderManagerCode/ # 文件夹管理相关代码 │ ├── Main/ # 主界面代码 │ └── Settings/ # 设置界面代码 ├── Res/ # 资源文件 │ └── png/ # 图标图片资源 ├── App.config # 应用程序配置 ├── LogItem.cs # 日志项数据结构 ├── LogManager.cs # 日志管理类 ├── ProcessHelper.cs # 进程操作辅助类 ├── Program.cs # 程序入口点 ├── ServerConfig.cs # 服务器配置类 ├── ServerConfigManager.cs # 服务器配置管理类 ├── ServerMonitor.cs # 服务器监控核心类 ├── ServerStatus.cs # 服务器状态枚举类 ├── SCNET_Restart_Tool.csproj # 项目文件 └── SCNET_Restart_Tool.sln # 解决方案文件 ``` ## 注意事项 1. **管理员权限**:程序需要管理员权限才能正确监控和管理系统进程,请确保以管理员身份运行 2. **配置文件备份**:建议定期备份程序配置文件,以防止配置丢失 3. **网络安全**:使用远程命令功能时,请确保设置强密码并限制访问IP 4. **日志管理**:定期清理日志文件,避免占用过多磁盘空间 5. **系统兼容性**:Windows 版本需要 .NET 9.0 Runtime,Linux 版本需要 .NET 8.0 Runtime ## 常见问题解答 **Q: 程序无法检测到服务器进程怎么办?** A: 请检查服务器程序路径和进程名是否正确,确保服务器程序确实在运行中。 **Q: 定时重启功能不生效是什么原因?** A: 请检查系统时间是否准确,以及定时重启设置是否正确保存。 **Q: 如何让程序随系统启动自动运行?** A: 在全局设置中启用「开机自启」选项,或手动将程序快捷方式添加到系统启动项。 ## 更新日志 ### v1.0.0 - 初始版本发布 - 实现基本的服务器监控和自动重启功能 - 支持多服务器管理 - 提供Windows图形界面版本 ## 许可证 该项目采用 MIT 许可证 - 详情请查看 LICENSE 文件 ## 联系我们 如有问题或建议,请通过以下方式联系我们: - 项目维护者:[项目维护者名称] - 反馈邮箱:[反馈邮箱地址] - GitHub仓库:[GitHub仓库链接] 1. **Windows 版安装** - 从发布页面下载最新版本的 `SCNET_Restart_Tool.zip` - 解压到任意目录 - 右键点击 `SCNET_Restart_Tool.exe`,选择「以管理员身份运行」启动程序 - 如需开机自启,可创建快捷方式并放入启动文件夹 2. **Linux 版安装** - 从发布页面下载最新版本的 `LinuxRestartTool.zip` - 解压到目标目录 - 安装 .NET 8.0 Runtime:`sudo apt-get install -y dotnet-runtime-8.0`(Ubuntu/Debian) - 运行程序:`dotnet LinuxRestartTool.dll` - 如需后台运行,可使用 systemd 服务配置或 nohup 命令 ### 配置说明 #### Windows 版配置 1. **服务器基本配置** - 点击「新增服务器」按钮 - 填写服务器名称、程序路径(可通过「浏览文件」选择) - 设置服务器 IP 和端口(用于命令发送) - 如需密码验证,可设置访问密码 2. **重启策略配置** - **定时重启**:设置每日重启时间(格式:HH:MM) - **间隔重启**:设置间隔小时数(0表示禁用) - **命令功能**:勾选启用命令功能,允许发送指令到服务端 3. **保存配置** - 点击「保存配置」按钮,配置将自动保存到程序目录下的 `ServerConfigs.xml` 文件中 - 下次启动程序时,配置将自动加载 ``` ## 使用指南 ### Windows 版使用 1. **服务器管理** - 启动程序后,点击「新增服务器」添加新的服务端配置 - 选择服务器后,可点击「编辑服务器」修改配置或「删除服务器」移除配置 - 服务器列表会显示所有配置的服务器及其当前状态 2. **服务控制** - 选择服务器后,点击「启动服务器」手动启动服务 - 点击「停止服务器」手动停止服务 - 点击「重启服务器」手动重启服务 - 点击「停止所有服务器」可一次性停止所有运行中的服务器 3. **监控管理** - 选择服务器后,点击「开启监控」开始自动监控服务状态 - 监控开启后,程序会自动检测服务状态并在服务终止时自动重启 - 点击「关闭监控」停止自动监控 4. **文件夹管理** - 选择服务器后,点击「文件夹管理」可快速访问服务器相关文件夹 - 支持直接打开配置、日志、插件等常用目录 5. **命令发送** - 在编辑模式中启用命令功能 - 在命令输入框中输入命令,点击「发送指令」发送到服务端 - 程序会显示命令执行的响应结果 ### 远程命令使用 Windows 版本中,可直接通过界面的命令输入框发送命令到服务端。常见命令示例: - `close 9 例行维护`:正常关闭服务端(带维护消息) - 其他自定义命令可根据服务端支持的命令进行发送 ## 常见问题解答 **Q: 程序启动时提示需要管理员权限?** A: 由于程序需要监控和管理系统进程,建议以管理员身份运行程序以确保功能正常。 **Q: 监控程序能够检测到服务崩溃,但无法自动重启?** A: 请检查以下几点: - 服务端程序路径是否正确 - 程序是否以管理员身份运行 - 目标服务端程序是否存在权限问题 **Q: 如何修改日志保存路径?** A: 点击界面右上角的「设置」按钮,在设置界面中可自定义日志保存路径。 **Q: 如何配置开机自启?** A: Windows 系统中,可创建程序快捷方式并放入启动文件夹;Linux 系统中,建议配置 systemd 服务。 **Q: Linux 版本支持多个服务器配置吗?** A: 目前 Linux 版本仅支持单个服务器配置,如需监控多个服务器,请运行多个实例。 **Q: 程序配置文件保存在哪里?** A: Windows 版配置保存在程序目录下的 `ServerConfigs.xml`;Linux 版配置保存在程序目录下的 `default_program.config`。 ## 开发与贡献 ### 开发环境搭建 1. 安装 Visual Studio 2022 或更高版本 2. 克隆项目代码 3. 打开 `SCNET_Restart_Tool.sln` 解决方案文件 4. 还原 NuGet 包:`dotnet restore` 5. 构建解决方案:`Build > Build Solution` ### 项目结构 - `SCNET_Restart_Tool`:Windows 主项目 - `界面`:包含所有 Windows 表单和用户界面 - `Res`:包含图标和资源文件 - `LinuxRestartTool`:Linux 命令行版本 ### 核心功能开发 - 如需扩展监控功能,请修改 `ServerMonitor.cs` - 如需添加新的界面元素,请修改 `ToolMain.cs` 和对应的设计器文件 - 如需添加新的配置项,请修改 `ServerConfig.cs` ### 贡献指南 1. Fork 本项目仓库 2. 创建您的特性分支 3. 提交您的更改 4. 推送到分支 5. 提交 Pull Request ## 更新日志 ### 主要更新 - 优化了进程检测逻辑,使用进程名+路径双重验证提高准确性 - 增加了自动重试机制,确保服务可靠启动 - 改进了日志系统,支持不同日志级别和文件保存 - 优化了用户界面,提供更直观的操作体验 - 修复了权限相关问题,确保程序在各种环境下正常运行 ## 许可证 本项目采用 MIT 许可证。详情请查看项目中的 LICENSE 文件。 ## 免责声明 本工具仅供学习和参考使用,使用本工具时请确保遵守相关法律法规。对于因使用本工具而导致的任何直接或间接损失,作者不承担任何责任。 --- 如有任何问题或建议,请提交 Issue 至本项目的 Gitee 页面。