mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 14:57:16 +08:00
73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package tools
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
// ServiceStatus 获取服务状态
|
|
func ServiceStatus(name string) (bool, error) {
|
|
output, err := Exec(fmt.Sprintf("systemctl status %s | grep Active | grep -v grep | awk '{print $2}'", name))
|
|
return output == "active", err
|
|
}
|
|
|
|
// ServiceIsEnabled 服务是否启用
|
|
func ServiceIsEnabled(name string) (bool, error) {
|
|
cmd := exec.Command("systemctl", "is-enabled", name)
|
|
output, _ := cmd.CombinedOutput()
|
|
status := strings.TrimSpace(string(output))
|
|
|
|
switch status {
|
|
case "enabled":
|
|
return true, nil
|
|
case "disabled":
|
|
return false, nil
|
|
case "masked":
|
|
return false, errors.New("服务已被屏蔽")
|
|
case "static":
|
|
return false, errors.New("服务已被静态启用")
|
|
case "indirect":
|
|
return false, errors.New("服务已被间接启用")
|
|
default:
|
|
return false, errors.New("无法确定服务状态")
|
|
}
|
|
}
|
|
|
|
// ServiceStart 启动服务
|
|
func ServiceStart(name string) error {
|
|
_, err := Exec(fmt.Sprintf("systemctl start %s", name))
|
|
return err
|
|
}
|
|
|
|
// ServiceStop 停止服务
|
|
func ServiceStop(name string) error {
|
|
_, err := Exec(fmt.Sprintf("systemctl stop %s", name))
|
|
return err
|
|
}
|
|
|
|
// ServiceRestart 重启服务
|
|
func ServiceRestart(name string) error {
|
|
_, err := Exec(fmt.Sprintf("systemctl restart %s", name))
|
|
return err
|
|
}
|
|
|
|
// ServiceReload 重载服务
|
|
func ServiceReload(name string) error {
|
|
_, err := Exec(fmt.Sprintf("systemctl reload %s", name))
|
|
return err
|
|
}
|
|
|
|
// ServiceEnable 启用服务
|
|
func ServiceEnable(name string) error {
|
|
_, err := Exec(fmt.Sprintf("systemctl enable %s", name))
|
|
return err
|
|
}
|
|
|
|
// ServiceDisable 禁用服务
|
|
func ServiceDisable(name string) error {
|
|
_, err := Exec(fmt.Sprintf("systemctl disable %s", name))
|
|
return err
|
|
}
|