logo
0
0
WeChat Login
✨feat: 添加 Windows 平台支持

minit Windows 版本适配指南

本项目现已支持 Windows 平台,通过构建标签实现跨平台兼容。

安装和使用

构建 Windows 版本

# 在 Windows 上构建 GOOS=windows GOARCH=amd64 go build -o minit.exe . # 或者在 Linux/macOS 上交叉编译 Windows 版本 GOOS=windows GOARCH=amd64 go build -o minit.exe .

默认配置目录

Windows 版本使用以下默认路径:

  • 单元配置目录:C:\etc\minit.d
  • 日志目录:C:\var\log\minit

这些路径可以通过环境变量覆盖:

set MINIT_UNIT_DIR=C:\MyApp\config set MINIT_LOG_DIR=C:\MyApp\logs

功能差异

支持的功能

  • ✅ 基本进程管理(daemon、once、cron、render)
  • ✅ 单元配置加载(YAML 文件和环境变量)
  • ✅ 日志记录和轮转
  • ✅ 模板渲染
  • ✅ 字符集转码(GBK、GB18030)
  • ✅ 环境变量处理
  • ✅ 进程信号处理(使用 os.Interrupt)

暂不支持的功能

  • ❌ 资源限制设置(rlimits)- 在 Windows 上无对应功能
  • ❌ 内核参数配置(sysctl)- Windows 不支持 /proc/sys
  • ❌ 透明大页配置(THP)- Windows 无此概念
  • ❌ PID 1 僵尸进程清理 - Windows 自动处理

进程管理差异

  1. 信号处理:Windows 版本仅支持 os.Interrupt 信号
  2. 进程组:Windows 不设置进程组,直接管理子进程
  3. 进程终止:使用 Kill() 而非 Unix 信号

配置示例

基本单元配置

# C:\etc\minit.d\example.yml kind: daemon name: my-service command: - my-service.exe - --config - C:\MyApp\config.toml dir: C:\MyApp

Windows 服务配置

kind: daemon name: windows-service command: - cmd - /c - net start MyService

已知限制

  1. 路径分隔符:建议在配置中使用正斜杠 / 或转义反斜杠 \\
  2. 权限:某些系统操作可能需要管理员权限
  3. Shell 命令:Windows 下建议使用 cmd /cpowershell -c

构建标签文件

项目使用以下构建标签实现平台分离:

  • //go:build !windows - Linux/Unix 平台
  • //go:build windows - Windows 平台

相关文件:

  • main.go / main_windows.go - 主程序入口
  • pkg/mexec/manager.go / pkg/mexec/manager_windows.go - 进程执行器
  • pkg/msetups/setup_*_windows.go - Windows 版本的系统设置模块

贡献指南

在为 Windows 平台贡献代码时:

  1. 使用适当的构建标签
  2. 考虑 Windows 特有的路径和权限机制
  3. 为不支持的功能提供优雅的降级处理
  4. 在两个平台上测试功能