当前位置: 首页 > 面试题库 >

使用Go获取可用磁盘空间量

姚智
2023-03-14
问题内容

基本上,我需要输出df -h,其中包括可用空间和卷的总大小。该解决方案需要在Windows,Linux和Mac上运行并使用Go编写。

我浏览了ossyscallGo文档,但没有发现任何东西。在Windows上,即使命令行实用程序也很笨拙(dir C:\)或需要提升的特权(fsutil volume diskfree C:\)。当然有一种方法我还没有发现…

更新:
根据nemo的回答和邀请,我提供了一个跨平台的Go软件包来执行此操作。


问题答案:

在POSIX系统上,可以使用syscall.Statfs
以当前工作目录的字节为单位打印可用空间的示例:

import "syscall"
import "os"

var stat syscall.Statfs_t

wd, err := os.Getwd()

syscall.Statfs(wd, &stat)

// Available blocks * size per block = available space in bytes
fmt.Println(stat.Bavail * uint64(stat.Bsize))

对于Windows,您还需要执行syscall路由。示例(来源):

h := syscall.MustLoadDLL("kernel32.dll")
c := h.MustFindProc("GetDiskFreeSpaceExW")

var freeBytes int64

_, _, err := c.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(wd))),
    uintptr(unsafe.Pointer(&freeBytes)), nil, nil)

随意编写一个提供跨平台功能的软件包。有关如何实现跨平台的内容,请参见构建工具帮助页面。



 类似资料:
  • 本文向大家介绍SQL Server获取磁盘空间使用情况,包括了SQL Server获取磁盘空间使用情况的使用技巧和注意事项,需要的朋友参考一下 对于DBA来说,监控磁盘使用情况是必要的工作,然后没有比较简单的方法能获取到磁盘空间使用率信息,下面总结下这些年攒下的脚本: 最常用的查看磁盘剩余空间,这个属于DBA入门必记的东西: xp_fixeddrives方式有点是系统自带,可直接使用,缺点是不能查

  • 我使用Grafana(v2.1.3)进行指标可视化。指标来自Graphite收集的Collectd。目标图是以百分比显示多个节点的空闲磁盘空间,例如,让文件夹 /data,所以以字节表示空闲空间的度量是: 表示总空间的度量是以下各项的总和: 因此,我有以下配置: 这里的$节点是从下拉列表(All,node1,node2,node3等)中选择的变量。当选择一个特定的节点时,它会按预期工作,但选择了错

  • 问题内容: 我正在尝试输出文件系统上的可用磁盘空间量。 如果我运行该命令,则可以通过以人为本并实际查看它来获得有关可用磁盘空间(以kb为单位)的良好信息。 我需要获取这些数据,并在我的shell脚本中的其他地方使用它。我最初考虑使用,但后来我的脚本无法移植到其他磁盘上,因为可用磁盘空间会发生变化,剪切将不会产生准确的结果。 如何仅获得示例的可用磁盘空间(以kb为单位)的输出? 问题答案: 要获取以

  • 问题内容: 我正在尝试使用来获取可用的iOS设备存储。 但是在编译时会给出此错误:我相信此错误是由此处提到的问题引起的,即返回可选的字典(文档)。我从一般意义上理解了这个问题,但是由于建议的解决方案涉及一个嵌套的情况,所以我不太了解如何修复我感兴趣的功能(这对我来说还很陌生)。有人可以建议如何使功能起作用吗?注意:我不确定原始功能是否由作者测试过,或者是否在xcode 6 beta下运行,但是就我

  • 本文向大家介绍使用什么命令查看磁盘使用空间? 空闲空间呢?相关面试题,主要包含被问及使用什么命令查看磁盘使用空间? 空闲空间呢?时的应答技巧和注意事项,需要的朋友参考一下 答案: df -hl 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% / /dev/hda1

  • 问题内容: 是否有一个函数可以返回给定目录路径的驱动器分区上的可用空间? 问题答案: 校验 我相信您可以将“可用空间”计算为 。