首页 > 其他分享 >go psutil获取磁盘信息

go psutil获取磁盘信息

时间:2024-02-26 14:46:12浏览次数:23  
标签:err usage fmt partition psutil Printf go 磁盘 disk

示例代码:

// 通过psutil获取所有分区的信息  
// 重要字段:  
/*  
    fmt.Printf("Device: %s\n", partition.Device)    fmt.Printf("Mountpoint: %s\n", partition.Mountpoint)    fmt.Printf("File system type: %s\n", partition.Fstype)    fmt.Printf("Total: %d bytes\n", usage.Total)    fmt.Printf("Used: %d bytes\n", usage.Used)    fmt.Printf("Free: %d bytes\n", usage.Free)    fmt.Printf("Percentage: %.2f%%\n\n", usage.UsedPercent)*/  
func getPartitionUsageByPsutil() map[string]*disk.UsageStat {  
    var partUsage = make(map[string]*disk.UsageStat)  
    partitions, err := disk.Partitions(false)  
    if err != nil {  
       logger.Log.Errorf("%v报错:%v\n", "disk.Partitions(false)", err)  
       return partUsage  
    }  
  
    // 遍历磁盘分区信息  
    for _, partition := range partitions {  
       // 如果分区为物理磁盘(不是虚拟分区),则获取详细信息  
       if partition.Device == partition.Mountpoint {  
          usage, err := disk.Usage(partition.Mountpoint)  
          if err != nil {  
             fmt.Printf("Error getting disk usage for %s: %s\n", partition.Mountpoint, err)  
             continue  
          }  
          partUsage[partition.Mountpoint] = usage  
       }  
    }  
  
    return partUsage  
}

注意事项

如果包含被加密的磁盘, 那么是无法拿到加密磁盘信息的; 并且如果它没有作为文件系统挂载, 那么其他的文件系统例如U盘之类的, 因为拿取列表的时候失败, 对应的也会失败;

标签:err,usage,fmt,partition,psutil,Printf,go,磁盘,disk
From: https://www.cnblogs.com/runninginsilence/p/18034288

相关文章

  • 这3款免费最佳Google翻译替代品,完美解决谷歌翻译国内用不了的尴尬
    前段时间Google谷歌翻译停止了中国区服务,谷歌翻译退出中国已经成为历史事件,导致Chrome谷歌浏览器无法翻译网页,使得很多小伙伴办公和学习都遇到阻碍,目前搜索谷歌翻译的网址无法正常访问,甚至连谷歌翻译的手机APP也无法使用。谷歌在线翻译突然撤出中国,这猝不及防的操作瞬间让很......
  • make集成go语言项目
    参考下面这个makefile.PHONY:builddebugdlvcleantoollinthelpall:buildbuild: @gobuild-v.debug: gobuild-gcflags"all=-N-l"-v-oapp.dlv: dlv--listen=:2345--headless=true--api-version=2--accept-multiclientexec./apptool:......
  • go语言和bash中处理csv
    golang中处理csv标准库中csv文件的一些内容varfileio.Readerreader:=csv.NewReader(file)gocsv库他有以下特点:简单的api来将csv内容解析成go结构体自定义解析特定类型的函数;自定义csv的reader和writer基本使用:下面的代码可以将csv文本的内容解析到切片中;pa......
  • gogs修改gitclone 仓库地址
      查看gogsdocker容器的名称dockerps进入容器内部dockerexec-itd1bba9f39a02/bin/bash编辑gogs容器的配置文件 vi/data/gogs/conf/app.ini  [server]DOMAIN= gogs.ceshi.online   #这个是ssh的地址  HTTP_PORT=3000EXTERNAL_......
  • 运用 Argo Workflows 协调 CI/CD 流水线
    ArgoWorkflows是一个开源的容器原生工作流引擎,用于协调CI/CD在Kubernetes中的运作。它以Kubernetes自定义资源(CRD)的形式实现,使开发人员能够创建自定义API对象,以兼容的方式扩展Kubernetes的功能。 选择ArgoWorkflows的原因ArgoWorkflows旨在运行于Kubernetes......
  • 【Gorm 错误收集】Error 1215 (HY000): Cannot add foreign key constraint
    错误:Error1215(HY000):Cannotaddforeignkeyconstraint相关mysql错误:Error1215(HY000):Cannotaddforeignkeyconstraint。场景:为了方便测试人员测试产品的功能以及后续报告,PM设计了一个测试用例的功能,用于记录需要测试的产品的操作步骤。针对这个功能,我建立......
  • go 语言flag 库使用
    flag用于解析命令行选项,有过类Unix系统使用经验的童鞋对命令行选项应该不陌生,例如命令ls-al列出当前目录下所有文件和目录的详细信息,其中-al就是命令行选项。命令行选项在实际开发中很常用,特别是在写工具的时候。自定义某些参数,如python-mSimpleHTTPServer8080启动......
  • 机器学习策略篇:详解正交化(Orthogonalization)
    正交化这是一张老式电视图片,有很多旋钮可以用来调整图像的各种性质,所以对于这些旧式电视,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来调梯形角度,还有一个旋钮用来调整图像左右偏移,还有一个旋钮用来调图像旋转角度之类的。电视设计......
  • go 同一个https端口实现多种认证方式
    参考kube-apiserver,访问https端口时,-k允许跳过默认的证书认证,从而实现多种认证方式。packagemainimport( "crypto/tls" "fmt" "net/http" klog"k8s.io/klog/v2")funchealthCheck(whttp.ResponseWriter,r*http.Request){ fmt.Fprintf(w,&qu......
  • golang文件和目录操作
    读取文件通过Read方法读取import( "fmt" "os")funcmain(){ /* 打开文件 */ //以只读的方式打开文件,返回一个文件指针类型的对象和error file,err:=os.Open("./test.txt") //文件打开操作完之后必须关闭文件流,可以使用defer延迟关闭 deferfile.Close()......