37 lines
732 B
Go
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,
|
|
}}
|
|
}
|