Files
EasyGoAdmin_GoFrame_EleVue/internal/logic/server_monitor_other.go
T
2026-10-20 11:37:25 +08:00

37 lines
732 B
Go

//go:build !windows
package logic
import (
"math"
"os"
"syscall"
"easygoadmin/api/v1"
)
// diskUsage 读取工作目录所在磁盘分区容量(Unix)
func diskUsage() []v1.ServerDiskInfo {
wd, err := os.Getwd()
if err != nil {
return nil
}
var st syscall.Statfs_t
if err = syscall.Statfs(wd, &st); err != nil {
return nil
}
bs := float64(st.Bsize)
total := float64(st.Blocks) * bs / 1073741824
free := float64(st.Bavail) * bs / 1073741824
usedPercent := 0.0
if total > 0 {
usedPercent = math.Round((total-free)/total*10000) / 100
}
return []v1.ServerDiskInfo{{
Path: wd,
TotalGB: math.Round(total*100) / 100,
FreeGB: math.Round(free*100) / 100,
UsedPercent: usedPercent,
}}
}