Skip to content
a tools for go app daemonize
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
conn.go
listener.go
server.go

README.md

为应用增加daemon和graceful

使用方法

  • 只增加daemon功能

要让你的应用支持daemon很简单,只需导入godaemon包即可,无需再调用任何方法

package main
import(
    _ "github.com/tim1020/godaemon" //仅导入,包的init方法被自动调用,嵌入daemon功能
)
func main(){
	//正常的业务代码
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "pid=%d", os.Getpid())
	})
	http.ListenAndServe(":8080", nil)
}
  • 增加graceful
package main
import(
    "github.com/tim1020/godaemon" //注意: 与仅daemon时不一样
)
func main(){
	mux1 := http.NewServeMux()
	mux1.HandleFunc("/", handler)
    godaemon.GracefulServe(":8080", mux1)
}

func handler(w http.ResponseWriter, r *http.Request){
	//业务处理
}

注意: 因为使用了syscall包,Win下不支持哦

命令行操作

使用godaemon后,你可以在命令行中以下列指令来管理你的应用:

(假设你编译出来的应用执行文件叫“app”,如果你的应用本身需要带参数运行,请把daemon指令参数放在最后)

  • app [start]

    带start参数或不带参数,启动为daemon进程

  • app restart

    带restart参数,重启进程(GracefulServe时不中断服务,仅daemon时会先停止再启动)

  • app stop

    带stop参数,停止应用进程 (kill -HUP)

  • app -h

    带-h参数, 显示命令行指令提示

带其它不识别的参数启动,godaemon不接管,直接短路至业务代码

You can’t perform that action at this time.