优化系统服务逻辑

This commit is contained in:
GoEdgeLab
2021-01-12 10:56:30 +08:00
parent e84915d9b0
commit 2a5e90caeb
3 changed files with 58 additions and 3 deletions

View File

@@ -7,17 +7,22 @@ import (
"github.com/TeaOSLab/EdgeNode/internal/nodes" "github.com/TeaOSLab/EdgeNode/internal/nodes"
"github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/Tea"
_ "github.com/iwind/TeaGo/bootstrap" _ "github.com/iwind/TeaGo/bootstrap"
"github.com/iwind/TeaGo/lists"
"github.com/iwind/TeaGo/types" "github.com/iwind/TeaGo/types"
"io/ioutil" "io/ioutil"
"log"
"net"
"os" "os"
"os/exec"
"syscall" "syscall"
"time"
) )
func main() { func main() {
app := apps.NewAppCmd(). app := apps.NewAppCmd().
Version(teaconst.Version). Version(teaconst.Version).
Product(teaconst.ProductName). Product(teaconst.ProductName).
Usage(teaconst.ProcessName + " [-v|start|stop|restart|quit|test]") Usage(teaconst.ProcessName + " [-v|start|stop|restart|quit|test|daemon]")
app.On("test", func() { app.On("test", func() {
err := nodes.NewNode().Test() err := nodes.NewNode().Test()
@@ -25,6 +30,49 @@ func main() {
_, _ = os.Stderr.WriteString(err.Error()) _, _ = os.Stderr.WriteString(err.Error())
} }
}) })
app.On("daemon", func() {
path := os.TempDir() + "/edge-node.sock"
isDebug := lists.ContainsString(os.Args, "debug")
isDebug = true
for {
conn, err := net.DialTimeout("unix", path, 1*time.Second)
if err != nil {
if isDebug {
log.Println("[DAEMON]starting ...")
}
// 尝试启动
err = func() error {
exe, err := os.Executable()
if err != nil {
return err
}
cmd := exec.Command(exe)
err = cmd.Start()
if err != nil {
return err
}
err = cmd.Wait()
if err != nil {
return err
}
return nil
}()
if err != nil {
if isDebug {
log.Println("[DAEMON]", err)
}
time.Sleep(1 * time.Second)
} else {
time.Sleep(5 * time.Second)
}
} else {
_ = conn.Close()
time.Sleep(5 * time.Second)
}
}
})
app.On("quit", func() { app.On("quit", func() {
pidFile := Tea.Root + "/bin/pid" pidFile := Tea.Root + "/bin/pid"
data, err := ioutil.ReadFile(pidFile) data, err := ioutil.ReadFile(pidFile)

View File

@@ -14,6 +14,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"runtime" "runtime"
"time"
) )
func init() { func init() {
@@ -94,6 +95,12 @@ func (this *SystemServiceManager) setupSystemd(params maps.Map) error {
return err return err
} }
// 启动Service
go func() {
time.Sleep(5 * time.Second)
_ = exec.Command(systemctl, "start", teaconst.SystemdServiceName).Start()
}()
if output == "enabled" { if output == "enabled" {
// 检查文件路径是否变化 // 检查文件路径是否变化
data, err := ioutil.ReadFile("/etc/systemd/system/" + teaconst.SystemdServiceName + ".service") data, err := ioutil.ReadFile("/etc/systemd/system/" + teaconst.SystemdServiceName + ".service")

View File

@@ -126,10 +126,10 @@ Before=shutdown.target
After=network-online.target After=network-online.target
[Service] [Service]
Type=forking Type=simple
Restart=always Restart=always
RestartSec=1s RestartSec=1s
ExecStart=` + exePath + ` start ExecStart=` + exePath + ` daemon
ExecStop=` + exePath + ` stop ExecStop=` + exePath + ` stop
ExecReload=` + exePath + ` reload ExecReload=` + exePath + ` reload