diff --git a/agent-wdd/config/Disk.go b/agent-wdd/config/Disk.go index e6c8729..1745c68 100644 --- a/agent-wdd/config/Disk.go +++ b/agent-wdd/config/Disk.go @@ -2,10 +2,11 @@ package config import ( "agent-wdd/log" + "agent-wdd/utils" "bufio" + "fmt" "os" "path/filepath" - "strconv" "strings" ) @@ -80,47 +81,31 @@ func DiskListGather() { } func (disk *Disk) calculateDiskUsage() { - // var stat unix.Statfs_t - // err := unix.Statfs(disk.Path, &stat) - // if err != nil { - // log.Error("disk syscall error: %v", err) - // disk.Size = "0B" - // disk.Usage = "0B" - // disk.Percent = "0.00%" - // return - // } - - // // 计算存储空间大小 - // totalBytes := stat.Blocks * uint64(stat.Bsize) - // availBytes := stat.Bavail * uint64(stat.Bsize) - // usedBytes := totalBytes - availBytes - - // // 格式化输出 - // disk.Size = formatDiskSize(totalBytes) - // disk.Usage = formatDiskSize(usedBytes) - - // if totalBytes == 0 { - // disk.Percent = "0.00%" - // } else { - // percent := float64(usedBytes) / float64(totalBytes) * 100 - // disk.Percent = fmt.Sprintf("%.2f%%", percent) - // } -} - -func formatDiskSize(bytes uint64) string { - units := []string{"B", "KB", "MB", "GB", "TB", "PB"} - var unitIndex int - size := float64(bytes) - - for size >= 1000 && unitIndex < len(units)-1 { - size /= 1000 - unitIndex++ + var stat unix.Statfs_t + err := unix.Statfs(disk.Path, &stat) + if err != nil { + log.Error("disk syscall error: %v", err) + disk.Size = "0B" + disk.Usage = "0B" + disk.Percent = "0.00%" + return } - if unitIndex == 0 { - return strconv.FormatUint(bytes, 10) + units[unitIndex] + // 计算存储空间大小 + totalBytes := stat.Blocks * uint64(stat.Bsize) + availBytes := stat.Bavail * uint64(stat.Bsize) + usedBytes := totalBytes - availBytes + + // 格式化输出 + disk.Size = utils.HumanDiskSize(totalBytes) + disk.Usage = utils.HumanDiskSize(usedBytes) + + if totalBytes == 0 { + disk.Percent = "0.00%" + } else { + percent := float64(usedBytes) / float64(totalBytes) * 100 + disk.Percent = fmt.Sprintf("%.2f%%", percent) } - return strconv.FormatFloat(size, 'f', 1, 64) + units[unitIndex] } func DiskListSaveConfig() { diff --git a/agent-wdd/config/Memory.go b/agent-wdd/config/Memory.go index 1a703e0..06298af 100644 --- a/agent-wdd/config/Memory.go +++ b/agent-wdd/config/Memory.go @@ -2,6 +2,7 @@ package config import ( "agent-wdd/log" + "agent-wdd/utils" "os" "os/exec" "strconv" @@ -27,7 +28,7 @@ func (mem *Memory) Gather() { if err != nil { mem.Size = "0B" } else { - mem.Size = formatSize(kb * 1024) + mem.Size = utils.HumanSize(kb * 1024) } break } @@ -127,26 +128,10 @@ func (swap *Swap) Gather() { swap.Size = "0B" } else { swap.Open = true - swap.Size = formatSize(totalKB * 1024) + swap.Size = utils.HumanSize(totalKB * 1024) } } -func formatSize(bytes uint64) string { - units := []string{"B", "KB", "MB", "GB", "TB", "PB"} - var unitIndex int - size := float64(bytes) - - for size >= 1024 && unitIndex < len(units)-1 { - size /= 1024 - unitIndex++ - } - - if unitIndex == 0 { - return strconv.FormatUint(bytes, 10) + units[unitIndex] - } - return strconv.FormatFloat(size, 'f', 1, 64) + units[unitIndex] -} - func (swap *Swap) SaveConfig() { log.Info("Saving INFO => SWAP !") diff --git a/agent-wdd/utils/DownloadUtils.go b/agent-wdd/utils/DownloadUtils.go index 599b586..5e0f78f 100644 --- a/agent-wdd/utils/DownloadUtils.go +++ b/agent-wdd/utils/DownloadUtils.go @@ -46,6 +46,9 @@ func downloadWithProgress(client *http.Client, url, dest string) (bool, string) size := resp.ContentLength var downloaded int64 + // 打印下载信息 + fmt.Printf("开始下载文件: %s 文件大小: %s\n", url, HumanSizeInt(size)) + // 创建带进度跟踪的Reader progressReader := &progressReader{ Reader: resp.Body, diff --git a/agent-wdd/utils/FormatUtils.go b/agent-wdd/utils/FormatUtils.go new file mode 100644 index 0000000..6611d4b --- /dev/null +++ b/agent-wdd/utils/FormatUtils.go @@ -0,0 +1,40 @@ +package utils + +import "strconv" + +func HumanSize(bytes uint64) string { + units := []string{"B", "KB", "MB", "GB", "TB", "PB"} + var unitIndex int + size := float64(bytes) + + for size >= 1024 && unitIndex < len(units)-1 { + size /= 1024 + unitIndex++ + } + + if unitIndex == 0 { + return strconv.FormatUint(bytes, 10) + units[unitIndex] + } + + return strconv.FormatFloat(size, 'f', 1, 64) + units[unitIndex] +} + +func HumanSizeInt(bytes int64) string { + return HumanSize(uint64(bytes)) +} + +func HumanDiskSize(bytes uint64) string { + units := []string{"B", "KB", "MB", "GB", "TB", "PB"} + var unitIndex int + size := float64(bytes) + + for size >= 1000 && unitIndex < len(units)-1 { + size /= 1000 + unitIndex++ + } + + if unitIndex == 0 { + return strconv.FormatUint(bytes, 10) + units[unitIndex] + } + return strconv.FormatFloat(size, 'f', 1, 64) + units[unitIndex] +}