安装需要使用的库
1
| $ go get github.com/kardianos/service
|
按照例子写一个简单的服务
定义一个结构体,实现Start, Stop接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| type program struct{}
func (p *program) Start(s service.Service) error { logger.Info("start running") go p.run() return nil } func (p *program) run() { } func (p *program) Stop(s service.Service) error { logger.Info("stop running") return nil }
func main() { svcFlag := flag.String("service", "", "Control the system service.") flag.Parse()
svcConfig := &service.Config{ Name: "GoServiceExampleSimple", DisplayName: "Go Service Example", Description: "This is an example Go 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) } if len(*svcFlag) != 0 { err := service.Control(s, *svcFlag) if err != nil { log.Printf("Valid actions: %q\n", service.ControlAction) log.Fatal(err) } return } err = s.Run() if err != nil { logger.Error(err) } }
|
构建
1
| $ go build -o service-demo.exe main.go
|
安装服务
1
| $ ./service-demo.exe -service install
|
安装后运行services.msc
,在服务列表中可以找到我们的服务。
其他命令参数有start, stop, uninstall
1
| Valid actions: ["start" "stop" "restart" "install" "uninstall"]
|
完整的代码在这里。