windows使用kardianos/service将go程序制作成系统服务

管理员 2022-01-26
0 85
windows使用kardianos/service将go程序制作成系统服务

本文讲解如何使用kardianos/service包将golang应用程序制作成系统服务

安装依赖库推荐go mod

go get -u github.com/kardianos/service

go代码

package main

import (
   "github.com/kardianos/service"
   "log"
   "time"
)

var logger service.Logger

// 创建一个新的program并实现Start、run、Stop三个方法
type program struct{}

func (p *program) Start(s service.Service) error {
   // Start should not block. Do the actual work async.
   go p.run()
   return nil
}

func (p *program) run() {
   // Do work here
   for {
      log.Println(time.Now())
      time.Sleep(time.Second * 5)
   }
}

func (p *program) Stop(s service.Service) error {
   // Stop should not block. Return with a few seconds.
   return nil
}

func main() {
   svcConfig := &service.Config{
      Name:        "my_go_service",        // 服务名称
      DisplayName: "my_go_service",        // 显示名称
      Description: "golang test service.", // 服务描述
   }
   prg := &program{}
   s, err := service.New(prg, svcConfig) // 实例化服务
   if err != nil {
      log.Fatal(err)
   }
   logger, err = s.Logger(nil)
   if err != nil {
      log.Fatal(err)
   }
   err = s.Run() // 启动
   if err != nil {
      logger.Error(err)
   }
}

windows如何添加服务

go build main.go

构建windows exe应用程序并放到一个指定的目录如C:/go_test_service

image.png

添加服务cmd运行命令

sc create go_test_service binpath= C:/go_test_service/main.exe type= own start= auto displayname= go_test_service

删除服务cmd运行命令

sc delete go_test_service
回复
  • 消灭零回复