Add ttop example
This commit is contained in:
parent
9ec1539ccc
commit
e62b592964
@ -3,18 +3,20 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"bufio"
|
||||
"os"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
"runtime"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"errors"
|
||||
"runtime"
|
||||
"github.com/marigs/termui"
|
||||
|
||||
"github.com/gizak/termui"
|
||||
"github.com/gizak/termui/extra"
|
||||
)
|
||||
|
||||
const statFilePath = "/proc/stat"
|
||||
@ -52,10 +54,10 @@ func subCpuStat(m CpuStat, s CpuStat) CpuStat {
|
||||
|
||||
func procCpuStat(c CpuStat) CpuStat {
|
||||
sum := c.user + c.nice + c.system + c.idle
|
||||
return CpuStat{user: c.user/sum*100,
|
||||
nice: c.nice/sum*100,
|
||||
system: c.system/sum*100,
|
||||
idle: c.idle/sum*100}
|
||||
return CpuStat{user: c.user / sum * 100,
|
||||
nice: c.nice / sum * 100,
|
||||
system: c.system / sum * 100,
|
||||
idle: c.idle / sum * 100}
|
||||
}
|
||||
|
||||
func (cs *CpusStats) tick(ns map[string]CpuStat) {
|
||||
@ -80,7 +82,7 @@ func (eip *errIntParser) parse(s string) (ret int64) {
|
||||
|
||||
type LineProcessor interface {
|
||||
process(string) error
|
||||
finalize() interface {}
|
||||
finalize() interface{}
|
||||
}
|
||||
|
||||
type CpuLineProcessor struct {
|
||||
@ -110,7 +112,7 @@ func (clp *CpuLineProcessor) process(line string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (clp *CpuLineProcessor) finalize() interface {} {
|
||||
func (clp *CpuLineProcessor) finalize() interface{} {
|
||||
return clp.m
|
||||
}
|
||||
|
||||
@ -149,11 +151,11 @@ func (ms *MemStat) process(line string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (ms *MemStat) finalize() interface {} {
|
||||
func (ms *MemStat) finalize() interface{} {
|
||||
return *ms
|
||||
}
|
||||
|
||||
func processFileLines(filePath string, lp LineProcessor) (ret interface {}, err error) {
|
||||
func processFileLines(filePath string, lp LineProcessor) (ret interface{}, err error) {
|
||||
var statFile *os.File
|
||||
statFile, err = os.Open(filePath)
|
||||
if err != nil {
|
||||
@ -184,13 +186,13 @@ func processFileLines(filePath string, lp LineProcessor) (ret interface {}, err
|
||||
}
|
||||
|
||||
func getCpusStatsMap() (m map[string]CpuStat, err error) {
|
||||
var aux interface {}
|
||||
var aux interface{}
|
||||
aux, err = processFileLines(statFilePath, &CpuLineProcessor{m: make(map[string]CpuStat)})
|
||||
return aux.(map[string]CpuStat), err
|
||||
}
|
||||
|
||||
func getMemStats() (ms MemStat, err error) {
|
||||
var aux interface {}
|
||||
var aux interface{}
|
||||
aux, err = processFileLines(meminfoFilePath, &MemStat{})
|
||||
return aux.(MemStat), err
|
||||
}
|
||||
@ -211,14 +213,13 @@ func NewCpuTabElems(width int) *CpuTabElems {
|
||||
LChart: lc}
|
||||
}
|
||||
|
||||
|
||||
func (cte *CpuTabElems) AddGauge(key string, Y int, width int) *termui.Gauge {
|
||||
cte.GMap[key] = termui.NewGauge()
|
||||
cte.GMap[key].Width = width
|
||||
cte.GMap[key].Height = 3
|
||||
cte.GMap[key].Y = Y
|
||||
cte.GMap[key].Border.Label = key
|
||||
cte.GMap[key].Percent = 0//int(val.user + val.nice + val.system)
|
||||
cte.GMap[key].Percent = 0 //int(val.user + val.nice + val.system)
|
||||
return cte.GMap[key]
|
||||
}
|
||||
|
||||
@ -263,7 +264,7 @@ func (mte *MemTabElems) Update(ms MemStat) {
|
||||
copy(mte.SLines.Lines[0].Data[1:], mte.SLines.Lines[0].Data[0:])
|
||||
mte.SLines.Lines[0].Data[0] = used
|
||||
if len(mte.SLines.Lines[0].Data) > mte.SLines.Width-2 {
|
||||
mte.SLines.Lines[0].Data = mte.SLines.Lines[0].Data[0:mte.SLines.Width-2]
|
||||
mte.SLines.Lines[0].Data = mte.SLines.Lines[0].Data[0 : mte.SLines.Width-2]
|
||||
}
|
||||
}
|
||||
|
||||
@ -287,10 +288,10 @@ func main() {
|
||||
header.HasBorder = false
|
||||
header.TextBgColor = termui.ColorBlue
|
||||
|
||||
tabCpu := termui.NewTab("CPU")
|
||||
tabMem := termui.NewTab("MEM")
|
||||
tabCpu := extra.NewTab("CPU")
|
||||
tabMem := extra.NewTab("MEM")
|
||||
|
||||
tabpane := termui.NewTabpane()
|
||||
tabpane := extra.NewTabpane()
|
||||
tabpane.Y = 1
|
||||
tabpane.Width = 30
|
||||
tabpane.HasBorder = false
|
||||
@ -365,4 +366,3 @@ func main() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user