diff options
author | Sean E. Russell <ser@ser1.net> | 2020-02-27 18:51:28 -0600 |
---|---|---|
committer | Sean E. Russell <ser@ser1.net> | 2020-02-28 07:06:51 -0600 |
commit | 7a89225d729d4c54c5bc95b21979f48f9cd046b1 (patch) | |
tree | 10bf143324cf553765d7002d0eb82abc21c72bb1 /devices/mem_swap_freebsd.go | |
parent | 4fce1654c5c263797205997e7635c7d06c393a85 (diff) |
Abstracts CPU & mem devices.
Finishes device refactoring: temps
Refactoring to allow updating maps. Simpler, and optimizable.
Diffstat (limited to 'devices/mem_swap_freebsd.go')
-rw-r--r-- | devices/mem_swap_freebsd.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/devices/mem_swap_freebsd.go b/devices/mem_swap_freebsd.go new file mode 100644 index 0000000..3a95aa9 --- /dev/null +++ b/devices/mem_swap_freebsd.go @@ -0,0 +1,44 @@ +// +build freebsd + +package devices + +import ( + "os/exec" + "strconv" + "strings" +) + +func init() { + mf := func(mems map[string]MemoryInfo) map[string]error { + cmd := "swapinfo -k|sed -n '1!p'|awk '{print $2,$3,$5}'" + output, err := exec.Command("sh", "-c", cmd).Output() + if err != nil { + return map[string]error{"swapinfo": err} + } + + s := strings.TrimSuffix(string(output), "\n") + s = strings.ReplaceAll(s, "\n", " ") + ss := strings.Split(s, " ") + ss = ss[((len(ss)/3)-1)*3:] + + errors := make(map[string]error) + mem := MemoryInfo{} + mem.Total, err = strconv.ParseUint(ss[0], 10, 64) + if err != nil { + errors["swap total"] = err + } + + mem.Used, err = strconv.ParseUint(ss[1], 10, 64) + if err != nil { + errors["swap used"] = err + } + + mem.UsedPercent, err = strconv.ParseFloat(strings.TrimSuffix(ss[2], "%"), 64) + if err != nil { + errors["swap percent"] = err + } + mems["Swap"] = mem + return errors + } + RegisterMem(mf) +} |