运行命令
nohup ./server &
------------------------------------------
以下两种方式获取进程pid
ps aux | grep server
ps -ef
------------------------------------------
kill -1 pid
运行该命令实现:服务重新启动的零停机,自动fork新的进程,不会关闭旧链接
gin代码实现
import (
"github.com/fvbock/endless"
"github.com/gin-gonic/gin"
"log"
"syscall"
"time"
)
func initServer(address string, router *gin.Engine) server {
log.Println(`run in unix`)
s := endless.NewServer(address, router)
s.ReadHeaderTimeout = 20 * time.Second
s.WriteTimeout = 20 * time.Second
s.MaxHeaderBytes = 1 << 20
s.BeforeBegin = func(add string) {
log.Printf("Actual pid is %d", syscall.Getpid())
}
s.SignalHooks[endless.PRE_SIGNAL][syscall.SIGUSR2] = append(
s.SignalHooks[endless.PRE_SIGNAL][syscall.SIGUSR2],
func() {
log.Println("Received SIGUSR2, restarting...")
},
)
return s
}