go lang 後台(守護進程)運行(daemon)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

引用:https://bitbucket.org/kardianos/service


service will install / un-install, start / stop, and run a program as a service (daemon).


Currently supports Windows XP+, Linux/Upstart, and OSX/Launchd.


package mainimport (        "bitbucket.org/kardianos/service"        "fmt"        "os")var log service.Loggerfunc main() {        var name = "GoServiceTest"        var displayName = "Go Service Test"        var desc = "This is a test Go service.  It is designed to run well."        var s, err = service.NewService(name, displayName, desc)        log = s        if err != nil {                fmt.Printf("%s unable to start: %s", displayName, err)                return        }        if len(os.Args) > 1 {                var err error                verb := os.Args[1]                switch verb {                case "install":                        err = s.Install()                        if err != nil {                                fmt.Printf("Failed to install: %s\n", err)                                return                        }                        fmt.Printf("Service \"%s\" installed.\n", displayName)                case "remove":                        err = s.Remove()                        if err != nil {                                fmt.Printf("Failed to remove: %s\n", err)                                return                        }                        fmt.Printf("Service \"%s\" removed.\n", displayName)                case "run":                        doWork()                case "start":                        err = s.Start()                        if err != nil {                                fmt.Printf("Failed to start: %s\n", err)                                return                        }                        fmt.Printf("Service \"%s\" started.\n", displayName)                case "stop":                        err = s.Stop()                        if err != nil {                                fmt.Printf("Failed to stop: %s\n", err)                                return                        }                        fmt.Printf("Service \"%s\" stopped.\n", displayName)                }                return        }        err = s.Run(func() error {                // start                go doWork()                return nil        }, func() error {                // stop                stopWork()                return nil        })        if err != nil {                s.Error(err.Error())        }}func doWork() {        log.Info("I'm Running!")        select {}}func stopWork() {        log.Info("I'm Stopping!")}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.