command.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package common
  2. import (
  3. "os/exec"
  4. "runtime"
  5. "strings"
  6. )
  7. func runInWindows(cmd string) (string, error) {
  8. result, err := exec.Command("cmd", "/c", cmd).Output()
  9. if err != nil {
  10. return "", err
  11. }
  12. return strings.TrimSpace(string(result)), err
  13. }
  14. func RunCommand(cmd string) (string, error) {
  15. if runtime.GOOS == "windows" {
  16. return runInWindows(cmd)
  17. } else {
  18. return runInLinux(cmd)
  19. }
  20. }
  21. func runInLinux(cmd string) (string, error) {
  22. result, err := exec.Command("/bin/sh", "-c", cmd).Output()
  23. if err != nil {
  24. return "", err
  25. }
  26. return strings.TrimSpace(string(result)), err
  27. }
  28. //根据进程名判断进程是否运行
  29. func CheckProRunning(serverName string) (bool, error) {
  30. a := `ps ux | awk '/` + serverName + `/ && !/awk/ {print $2}'`
  31. pid, err := RunCommand(a)
  32. if err != nil {
  33. return false, err
  34. }
  35. return pid != "", nil
  36. }
  37. //根据进程名称获取进程ID
  38. func GetPid(serverName string) (string, error) {
  39. a := `ps ux | awk '/` + serverName + `/ && !/awk/ {print $2}'`
  40. pid, err := RunCommand(a)
  41. return pid, err
  42. }