Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

LingxinMeng 7 mesiacov pred
rodič
commit
a35f65633f

+ 4 - 2
aarch64/pjibot_guide/common/config/c_cloud.go

@@ -39,9 +39,11 @@ type RosStruct struct {
 }
 
 type DiskStruct struct {
-	Name string `yaml:"name"`
-	Used uint64 `yaml:"used"`
+	Name string   `yaml:"name"`
+	Used uint64   `yaml:"used"`
+	Path []string `yaml:"path"`
 }
+
 type TriggerStruct struct {
 	Label  string   `yaml:"label"`
 	Topics []string `yaml:"topics"`

+ 3 - 0
aarch64/pjibot_guide/引导机器人默认配置文件-cloud-config.yaml

@@ -19,6 +19,9 @@ config-refresh-interval: 60
 disk:
   name: /dev/mmcblk0p8 # 磁盘名称
   used: 20000000000 # 磁盘占用阈值,单位bytes
+  path:
+    - /root/cicv-data-closedloop
+    - /root/pjirobot/data/cicv-data-closedloop
 data-dir:
   src: /root/pjirobot/ # 需要额外采集的 data 目录
   src-sub:

+ 18 - 0
common/util/u_resource.go

@@ -1,6 +1,7 @@
 package util
 
 import (
+	"fmt"
 	"github.com/shirou/gopsutil/cpu"
 	"github.com/shirou/gopsutil/disk"
 	"github.com/shirou/gopsutil/mem"
@@ -137,6 +138,23 @@ func GetDiskUsed(filesystem string) (uint64, error) {
 	return parseUint, nil
 }
 
+// GetDirectoryDiskUsed 获取目录列表的总大小
+func GetDirectoryDiskUsed(directories []string) (uint64, error) {
+	cmd := exec.Command("du", "-s", directories[0])
+	output, err := cmd.CombinedOutput()
+	if err != nil {
+		return 0, err
+	}
+	lines := strings.Split(string(output), "\n")
+	fields := strings.Fields(lines[0])
+	parseUint, err := strconv.ParseUint(fields[0], 10, 64)
+	fmt.Println("parseUint", parseUint)
+	if err != nil {
+		return 0, err
+	}
+	return parseUint, nil
+}
+
 // GetDiskUsagePercent 获取磁盘使用率
 func GetDiskUsagePercent() (float64, error) {
 	// 执行 df 命令获取磁盘使用情况

+ 41 - 0
tools/disk/main/main.go

@@ -0,0 +1,41 @@
+package main
+
+import (
+	"fmt"
+	"os/exec"
+	"strconv"
+	"strings"
+)
+
+func GetDirectoryDiskUsed(directories []string) (uint64, error) {
+	fmt.Println(strings.Join(directories, " "))
+	cmd := exec.Command("du", "-s", strings.Join(directories, " "))
+	output, err := cmd.CombinedOutput()
+	if err != nil {
+		fmt.Println(err)
+		return 0, err
+	}
+	lines := strings.Split(string(output), "\n")
+	fmt.Println(lines)
+	sum := uint64(0)
+	for _, line := range lines {
+		fields := strings.Fields(line)
+		parseUint, err := strconv.ParseUint(fields[0], 10, 64)
+		fmt.Println("parseUint", parseUint)
+		if err != nil {
+			fmt.Println(err)
+			return 0, err
+		}
+		sum += parseUint
+	}
+
+	return sum, nil
+}
+
+func main() {
+	diskUsed, err := GetDirectoryDiskUsed([]string{"/root/cicv-data-closedloop", "/root/pjirobot/data/cicv-data-closedloop"})
+	if err != nil {
+		return
+	}
+	fmt.Println("diskUsed", diskUsed)
+}