1
0
forked from x/ContextOS
ContextOS/src/contexts/cli/cli_linux.go
shaoying 108155dd31 opt mdb
Change-Id: I359a53b2521bc0e92d079bc37a57e62c990458b9
2019-01-16 20:34:58 +08:00

39 lines
948 B
Go

package cli
import (
"contexts/ctx"
"fmt"
"runtime"
"syscall"
"time"
"toolkit"
)
func sysinfo(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
sys := &syscall.Sysinfo_t{}
syscall.Sysinfo(sys)
d, e := time.ParseDuration(fmt.Sprintf("%ds", sys.Uptime))
m.Assert(e)
m.Append("NumCPU", runtime.NumCPU())
m.Append("uptime", d)
m.Append("procs", sys.Procs)
m.Append("total", kit.FmtSize(uint64(sys.Totalram)))
m.Append("free", kit.FmtSize(uint64(sys.Freeram)))
m.Append("mper", fmt.Sprintf("%d%%", sys.Freeram*100/sys.Totalram))
fs := &syscall.Statfs_t{}
syscall.Statfs("./", fs)
m.Append("blocks", kit.FmtSize(fs.Blocks*uint64(fs.Bsize)))
m.Append("bavail", kit.FmtSize(fs.Bavail*uint64(fs.Bsize)))
m.Append("bper", fmt.Sprintf("%d%%", fs.Bavail*100/fs.Blocks))
m.Append("files", fs.Files)
m.Append("ffree", fs.Ffree)
m.Append("fper", fmt.Sprintf("%d%%", fs.Ffree*100/fs.Files))
m.Table()
return
}