@jermey.armstrong
Для создания службы Windows на языке Go вы можете использовать пакет github.com/kardianos/service
.
Ниже приведен минимальный пример создания службы Windows с помощью этого пакета:
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 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package main import ( "log" "os" "time" "github.com/kardianos/service" ) var logger service.Logger type myService struct{} func (m *myService) Start(s service.Service) error { go m.run() return nil } func (m *myService) run() { // Здесь вы можете разместить код для выполнения службы. // Код будет выполняться в фоновом режиме после запуска службы. for { log.Println("Service is running...") time.Sleep(5 * time.Second) } } func (m *myService) Stop(s service.Service) error { // Здесь вы можете разместить код для остановки службы. // Код будет выполняться при остановке службы. return nil } func main() { svcConfig := &service.Config{ Name: "MyService", DisplayName: "My Service", Description: "This is my service.", } prg := &myService{} 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) } } |
Вам нужно будет сохранить этот файл с расширением .go и скомпилировать его в .exe с помощью команды go build
.
После компиляции вы можете установить службу, запустить, остановить и удалить ее с помощью команд командной строки:
Обратите внимание, что для выполнения команды install
и uninstall
требуются права администратора.