main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "bufio"
  4. "flag"
  5. "fmt"
  6. "github.com/oz123/gupta"
  7. "log"
  8. "os"
  9. "time"
  10. )
  11. func readProcStatLine() string {
  12. f, err := os.Open("/proc/stat")
  13. defer f.Close()
  14. rd := bufio.NewReader(f)
  15. line, err := rd.ReadString('\n')
  16. if err != nil {
  17. log.Fatalf("could not read /proc/stat, error: %v", err)
  18. }
  19. return line
  20. }
  21. func main() {
  22. var freq int
  23. var partition, netInterface string
  24. var load, memory, cpu bool
  25. flag.IntVar(&freq, "frequency", 5, "Frequency of polling in secods")
  26. flag.IntVar(&freq, "f", 5, "Frequency of polling in secods")
  27. flag.BoolVar(&memory, "m", false, "Poll memory")
  28. flag.BoolVar(&load, "l", false, "Poll load")
  29. flag.BoolVar(&cpu, "c", false, "poll CPU usage")
  30. flag.StringVar(&partition, "p", "", "Poll disk usage (partition)")
  31. flag.StringVar(&netInterface, "n", "", "Network usage (interface)")
  32. flag.Parse()
  33. fmt.Println(gupta.Hello())
  34. line := readProcStatLine()
  35. time.Sleep(time.Second)
  36. lineNew := readProcStatLine()
  37. for true {
  38. cpustat := gupta.NewCPUStat(line, lineNew)
  39. fmt.Printf("CPU usage %.2f%%\n", cpustat.CPUUsage())
  40. time.Sleep(time.Duration(freq) * time.Second)
  41. line = lineNew
  42. lineNew = readProcStatLine()
  43. }
  44. }