猿问

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

有没有办法检查 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.04

df -i /

Filesystem      Inodes  IUsed   IFree IUse% Mounted on

/dev/vda1      2621440 219719 2401721    9% /


BIG阳
浏览 147回答 2
2回答

斯蒂芬大帝

您可以使用syscall.Statfs。它的参数是一个路径名和一个指向Statfs_t结构的指针。它用包含路径名指定的文件或目录的文件系统的统计信息填充结构。通常您会使用.或/或挂载点的路径名。这是一个以路径名作为参数并显示 inode 信息的 Go 程序。package mainimport (    "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)}

温温酱

在你提到的系统上,macOs 和 Ubuntu,你可以使用func Fstatfs(fd int, buf *Statfs_t) (err error) .假设调用没有错误,输入参数*unix.Statfs_t将被更新。unix.Fstatfsunix.Statfs_t.Files和分别是对应于调用的第一个参数unix.Statfs_t.Ffree的文件系统的 inode 总数和空闲 inode 数。fdunix.Fstatfs
随时随地看视频慕课网APP

相关分类

Go
我要回答