/*
* @Author: your name
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /test/main.go
*/
package main
import (
"fmt"
"os"
"runtime"
"github.com/kardianos/service"
)
var logger service.Logge
func main() {
NCPU := runtime.NumCPU()
runtime.GOMAXPROCS(NCPU)
serConfig := &service.Config{
Name: "hhhh",
DisplayName: "test2",
Description: "test 开机自启动",
}
pro := &Program{}
s, err := service.New(pro, serConfig)
if err != nil {
fmt.Println(err, "service.New() err")
}
if len(os.Args) > 1 {
if os.Args[1] == "install" {
err = s.Install()
if err != nil {
fmt.Println("install err", err)
} else {
fmt.Println("install success")
}
return
}
if os.Args[1] == "remove" {
err = s.Uninstall()
if err != nil {
fmt.Println("Uninstall err", err)
} else {
fmt.Println("Uninstall success")
}
return
}
}
err = s.Run() // 运行服务
if err != nil {
fmt.Println("s.Run err", err)
}
}
type Program struct{}
func (p *Program) Start(s service.Service) error {
fmt.Println("server start")
go p.run()
return nil
}
func (p *Program) run() {
fmt.Println("开机自启动服务 - run")
}
func (p *Program) Stop(s service.Service) error {
fmt.Println("server stop")
return nil
}
sudo go run main.go install # 安装服务,mac需要权限,所以加sudo
cd /Library/LaunchDaemons
ls # 即可看到创建的服务hhhh.plist
sudo go run main.go remove # 卸载服务
# 如果出现timeout
go: github.com/kardianos/service@v1.1.0: Get "https://proxy.golang.org/github.com/kardianos/service/@v/v1.1.0.mod": dial tcp 1.1.1.1:443: i/o timeout
# 则执行下面的命令
go env -w GOPROXY=https://goproxy.cn
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。