使用Sock管理进程启停

This commit is contained in:
GoEdgeLab
2021-07-25 17:14:44 +08:00
parent f43a129fac
commit 164ea46823
9 changed files with 118 additions and 248 deletions

View File

@@ -5,15 +5,12 @@ import (
"github.com/TeaOSLab/EdgeNode/internal/apps"
teaconst "github.com/TeaOSLab/EdgeNode/internal/const"
"github.com/TeaOSLab/EdgeNode/internal/nodes"
"github.com/iwind/TeaGo/Tea"
_ "github.com/iwind/TeaGo/bootstrap"
"github.com/iwind/TeaGo/logs"
"github.com/iwind/TeaGo/types"
"io/ioutil"
"github.com/iwind/gosock/pkg/gosock"
"net/http"
_ "net/http/pprof"
"os"
"syscall"
)
func main() {
@@ -40,25 +37,13 @@ func main() {
fmt.Println("done")
})
app.On("quit", func() {
pidFile := Tea.Root + "/bin/pid"
data, err := ioutil.ReadFile(pidFile)
var sock = gosock.NewTmpSock(teaconst.ProcessName)
_, err := sock.Send(&gosock.Command{Code: "quit"})
if err != nil {
fmt.Println("[ERROR]quit failed: " + err.Error())
return
}
pid := types.Int(string(data))
if pid == 0 {
fmt.Println("[ERROR]quit failed: pid=0")
return
}
process, err := os.FindProcess(pid)
if err != nil {
return
}
if process != nil {
_ = process.Signal(syscall.SIGQUIT)
}
fmt.Println("done")
})
app.On("pprof", func() {
// TODO 自己指定端口