为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取空闲 inode 的数量?(`df -i` 等价物)

如何获取空闲 inode 的数量?(`df -i` 等价物)

Go
BIG阳 2022-07-11 14:29:48
有没有办法检查 Go 文件系统上可用/已用/总 inode 的数量?我想要的东西就像返回的东西一样,如果可能的话df -i不想打电话。df示例df:# On macOs 10.15 (-i not needed here)df /Filesystem   512-blocks     Used Available Capacity iused      ifree %iused  Mounted on/dev/disk1s2  236568496 22038704  44026328    34%  488339 1182354141    0%   /# On Ubuntu 18.04df -i /Filesystem      Inodes  IUsed   IFree IUse% Mounted on/dev/vda1      2621440 219719 2401721    9% /
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您可以使用syscall.Statfs。它的参数是一个路径名和一个指向Statfs_t结构的指针。它用包含路径名指定的文件或目录的文件系统的统计信息填充结构。通常您会使用.或/或挂载点的路径名。


这是一个以路径名作为参数并显示 inode 信息的 Go 程序。


package main


import (

    "fmt"

    "os"

    "syscall"

)


func main() {

    var statfs syscall.Statfs_t

    path := os.Args[1]

    if err := syscall.Statfs(path, &statfs); err != nil {

        fmt.Fprintf(os.Stderr, "Cannot stat %s: %v\n", path, err)

        os.Exit(1)

    }

    fmt.Printf("Inodes: total %d, free %d\n", statfs.Files, statfs.Ffree)

}


查看完整回答
反对 回复 2022-07-11
?
温温酱

TA贡献1752条经验 获得超4个赞

在你提到的系统上,macOs 和 Ubuntu,你可以使用

func Fstatfs(fd int, buf *Statfs_t) (err error) .

假设调用没有错误,输入参数*unix.Statfs_t将被更新。unix.Fstatfs

unix.Statfs_t.Files和分别是对应于调用的第一个参数unix.Statfs_t.Ffree的文件系统的 inode 总数和空闲 inode 数。fdunix.Fstatfs



查看完整回答
反对 回复 2022-07-11
  • 2 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信