package main
import (
"fmt"
"os"
"runtime"
"github.com/kardianos/service"
)
var logger service.Logger
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
cd /Library/LaunchDaemons
ls
sudo go run main.go remove
go: github.com/kardianos/service@v1.1.0: Get "https://proxy.golang.org/github.com/kardianos/service/@v/v1.1.0.mod": dial tcp 216.58.200.241:443: i/o timeout
go env -w GOPROXY=https://goproxy.cn