common_linux.go 736 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // +build linux
  2. package common
  3. import (
  4. "os"
  5. "os/exec"
  6. "strings"
  7. )
  8. func DoSysctrl(mib string) ([]string, error) {
  9. sysctl, err := exec.LookPath("/sbin/sysctl")
  10. if err != nil {
  11. return []string{}, err
  12. }
  13. cmd := exec.Command(sysctl, "-n", mib)
  14. cmd.Env = getSysctrlEnv(os.Environ())
  15. out, err := cmd.Output()
  16. if err != nil {
  17. return []string{}, err
  18. }
  19. v := strings.Replace(string(out), "{ ", "", 1)
  20. v = strings.Replace(string(v), " }", "", 1)
  21. values := strings.Fields(string(v))
  22. return values, nil
  23. }
  24. func NumProcs() (uint64, error) {
  25. f, err := os.Open(HostProc())
  26. if err != nil {
  27. return 0, err
  28. }
  29. defer f.Close()
  30. list, err := f.Readdirnames(-1)
  31. if err != nil {
  32. return 0, err
  33. }
  34. return uint64(len(list)), err
  35. }