From c65a42ea5d2e3626adfd5d09864b2b4bdb0f27d5 Mon Sep 17 00:00:00 2001 From: Longjun Luo Date: Mon, 26 Dec 2022 23:53:48 +0800 Subject: [PATCH] systemd: solve the problem of parsing pid of message When restore the service of Notify, need to parse the right pid. Signed-off-by: Longjun Luo --- src/client.go | 2 +- src/systemd.go | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/client.go b/src/client.go index 2bf6875..70d5832 100644 --- a/src/client.go +++ b/src/client.go @@ -79,7 +79,7 @@ func startClient(path string) { if ret != 0 { handleRet("restore", ret) } - RestoreMainPid(c.Args().Get(1)) + RestoreMainPid(c.Args().First()) NotifySytemd() SystemdReload() return nil diff --git a/src/systemd.go b/src/systemd.go index 65c53bc..cae7c05 100644 --- a/src/systemd.go +++ b/src/systemd.go @@ -1,11 +1,18 @@ package main import ( + "strings" "github.com/coreos/go-systemd/daemon" log "github.com/sirupsen/logrus" ) -func RestoreMainPid(pid string) { +func RestoreMainPid(command string) { + commands := strings.Split(command, "@") + if (len(commands) != 2) { + log.Errorf("Invalid command format %s \n", command) + return + } + pid := commands[1] ifSupport, err := daemon.SdNotify(false, "READY=1\nMAINPID="+pid) if ifSupport == false || err != nil { log.Errorf("Unable to notify systemd, support %v err %s \n", ifSupport, err) -- 2.38.1