refactor: remove hardcoded paths from systemctl controller, use agent config
This commit is contained in:
parent
a798965259
commit
4b7ca5fa82
@ -88,7 +88,7 @@ func New(agentCfg config.AgentConfig, baseDir string, ms *mediaserver.Client, st
|
||||
pc = procctl.New(agentCfg, baseDir)
|
||||
} else {
|
||||
// 使用 systemctl 模式管理 Media Server
|
||||
pc = procctl.NewSystemCtlController("safesight-edge-server")
|
||||
pc = procctl.NewSystemCtlController("safesight-edge-server", strings.TrimSpace(agentCfg.ConfigPath))
|
||||
}
|
||||
execPath, _ := os.Executable()
|
||||
if execPath != "" {
|
||||
|
||||
@ -12,14 +12,15 @@ import (
|
||||
|
||||
// SystemCtlController 使用 systemctl 管理 Media Server
|
||||
type SystemCtlController struct {
|
||||
serviceName string
|
||||
serviceName string
|
||||
configPath string
|
||||
}
|
||||
|
||||
// NewSystemCtlController 创建 systemctl 控制器
|
||||
func NewSystemCtlController(serviceName string) *SystemCtlController {
|
||||
return &SystemCtlController{
|
||||
serviceName: serviceName,
|
||||
}
|
||||
func NewSystemCtlController(serviceName string, configPath string) *SystemCtlController {
|
||||
return &SystemCtlController{
|
||||
serviceName: serviceName,
|
||||
configPath: configPath,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SystemCtlController) Enabled() bool { return s != nil }
|
||||
@ -49,13 +50,21 @@ func (s *SystemCtlController) Status() (Status, error) {
|
||||
return Status{
|
||||
Running: true,
|
||||
Pid: pid,
|
||||
ConfigPath: "/opt/safesight-edge-server/etc/media-server.json",
|
||||
ConfigPath: s.configPath,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *SystemCtlController) Version() (string, error) {
|
||||
// 直接执行 media-server --version
|
||||
cmd := exec.Command("/opt/safesight-edge-server/bin/safesight-edge-server", "--version")
|
||||
// 从 systemctl 获取 ExecStart 路径,再调用 --version
|
||||
binOut, err := exec.Command("systemctl", "show", "--property=ExecStart", "--value", s.serviceName).Output()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("get version failed: %w", err)
|
||||
}
|
||||
binPath := strings.Fields(strings.TrimSpace(string(binOut)))[0]
|
||||
if binPath == "" {
|
||||
return "", fmt.Errorf("get version failed: empty ExecStart")
|
||||
}
|
||||
cmd := exec.Command(binPath, "--version")
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("get version failed: %w", err)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user