From da8cc86e3a877189ba1f828968db23b8affacdcc Mon Sep 17 00:00:00 2001 From: shy Date: Thu, 14 Mar 2024 15:33:21 +0800 Subject: [PATCH] add some --- base/gdb/signal.go | 11 +---------- base/gdb/signal_unix.go | 25 +++++++++++++++++++++++++ base/gdb/signal_windows.go | 15 +++++++++++++++ base/web/dream.go | 3 +-- 4 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 base/gdb/signal_unix.go create mode 100644 base/gdb/signal_windows.go diff --git a/base/gdb/signal.go b/base/gdb/signal.go index e15d8ab2..53298095 100644 --- a/base/gdb/signal.go +++ b/base/gdb/signal.go @@ -3,7 +3,6 @@ package gdb import ( "os" "os/signal" - "runtime" "syscall" ice "shylinux.com/x/icebergs" @@ -43,15 +42,7 @@ const SIGNAL = "signal" func init() { Index.MergeCommands(ice.Commands{ SIGNAL: {Help: "信号量", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - if runtime.GOOS == ice.WINDOWS { - return - } - _signal_listen(m, 1, mdb.NAME, START, ice.CMD, "runtime") - _signal_listen(m, 2, mdb.NAME, RESTART, ice.CMD, "exit 1") - _signal_listen(m, 3, mdb.NAME, STOP, ice.CMD, "exit 0") - _signal_listen(m, int(syscall.SIGUSR1), mdb.NAME, "info", ice.CMD, "runtime") - }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { _signal_init(m, arg...) }}, LISTEN: {Name: "listen signal name cmd", Help: "监听", Hand: func(m *ice.Message, arg ...string) { _signal_listen(m, kit.Int(m.Option(SIGNAL)), arg...) }}, diff --git a/base/gdb/signal_unix.go b/base/gdb/signal_unix.go new file mode 100644 index 00000000..a21f4660 --- /dev/null +++ b/base/gdb/signal_unix.go @@ -0,0 +1,25 @@ +//go:build !windows + +package gdb + +import ( + "os" + "syscall" + + ice "shylinux.com/x/icebergs" + "shylinux.com/x/icebergs/base/mdb" + kit "shylinux.com/x/toolkits" +) + +func _signal_init(m *ice.Message, arg ...string) { + _signal_listen(m, 1, mdb.NAME, START, ice.CMD, "runtime") + _signal_listen(m, 2, mdb.NAME, RESTART, ice.CMD, "exit 1") + _signal_listen(m, 3, mdb.NAME, STOP, ice.CMD, "exit 0") + _signal_listen(m, int(syscall.SIGUSR1), mdb.NAME, "info", ice.CMD, "runtime") +} +func SignalProcess(m *ice.Message, pid string) bool { + if proc, err := os.FindProcess(kit.Int(pid)); err == nil && proc.Signal(syscall.SIGUSR1) == nil { + return true + } + return false +} diff --git a/base/gdb/signal_windows.go b/base/gdb/signal_windows.go new file mode 100644 index 00000000..a75353bd --- /dev/null +++ b/base/gdb/signal_windows.go @@ -0,0 +1,15 @@ +package gdb + +import ( + ice "shylinux.com/x/icebergs" + "shylinux.com/x/icebergs/base/mdb" +) + +func _signal_init(m *ice.Message, arg ...string) { + _signal_listen(m, 1, mdb.NAME, START, ice.CMD, "runtime") + _signal_listen(m, 2, mdb.NAME, RESTART, ice.CMD, "exit 1") + _signal_listen(m, 3, mdb.NAME, STOP, ice.CMD, "exit 0") +} +func SignalProcess(m *ice.Message, pid string) bool { + return false +} diff --git a/base/web/dream.go b/base/web/dream.go index 2ffde41c..fb7c9b54 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -7,7 +7,6 @@ import ( "regexp" "runtime" "strings" - "syscall" "time" ice "shylinux.com/x/icebergs" @@ -172,7 +171,7 @@ func _dream_check(m *ice.Message, name string) string { if pid := m.Cmdx(nfs.CAT, p, kit.Dict(ice.MSG_USERROLE, aaa.TECH)); pid != "" && nfs.Exists(m, "/proc/"+pid) { m.Info("already exists %v", pid) return "" - } else if proc, err := os.FindProcess(kit.Int(pid)); err == nil && proc.Signal(syscall.SIGUSR1) == nil { + } else if gdb.SignalProcess(m, pid) { m.Info("already exists %v", pid) return "" }