Golang 创建系统服务

By kcersing , 24 二月, 2023

//go:generate goversioninfo
package main

import (
"github.com/kardianos/service"
"io"
"log"
"os"
)

type program struct {}


func (p *program) Start(s service.Service) error {
go p.run()
return nil
}
func (p *program)run() {
// 业务逻辑
}

func (p *program)Stop(s service.Service)error {
return nil
}

func init() {

f, err := os.OpenFile("goWinService.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666)
if err != nil {
log.Fatal(err)
}
//defer f.Close()
l := io.MultiWriter(os.Stdout,f)
log.SetOutput(l)

}

func main() {
svsConfig := &service.Config{
Name: "幸福里硬件API服务",
DisplayName: "幸福里硬件API服务",
Description: "幸福里硬件API服务",
}
prg := &program{}

s,err := service.New(prg,svsConfig )
if err != nil{
log.Fatal(err)
}

if len(os.Args)>1{
//if os.Args[1]=="install"{
// fmt.Println("服务安装")
// s.Install()
// fmt.Println("服务安装成功")
//}
//if os.Args[1]=="remove"{
// fmt.Println("服务卸载")
// s.Uninstall()
// fmt.Println("服务卸载成功")
//}

//"start", "stop", "restart", "install", "uninstall"
log.Print("执行:" + os.Args[1])
err = service.Control(s, os.Args[1])
if err != nil {
log.Fatal(err)
}
}

err = s.Run()
if err!=nil {
log.Fatal(err)
}
}#注册
./main install

#启动
./main start

#停止
./main stop

#卸载
./main uninstall

标签