Linux
在 /proc 中獲取文件系統可用空間
我想知道 /proc 中是否存在顯示文件系統可用空間的文件,如 Ubuntu 的命令:df -h
root@localhost:~$ df -h S. files SIZE USE FREE %USE MNT IN udev 1,9G 4,0K 1,9G 1% /dev tmpfs 384M 1,2M 383M 1% /run /dev/sda3 95G 58G 33G 65% / none 4,0K 0 4,0K 0% /sys/fs/cgroup none 5,0M 0 5,0M 0% /run/lock none 1,9G 1,2M 1,9G 1% /run/shm none 100M 84K 100M 1% /run/user
我需要免費專欄。
在 /proc/partitions 我可以看到文件系統的總空間,但我需要免費的。
有誰知道?
提前致謝。
一般來說,
/proc
包含有關程序的資訊,而不是文件系統的資訊。如前所述,您希望從statfs()
系統呼叫中解析數據。df
是用於此的規範 shell 實用程序;你有什麼不想使用它的理由嗎?如果您對解析如此多的數據列不感興趣,可以使用:
$ df -h --output=target,avail
可以使用以下 sysfs 函式以程式方式獲取
#include <sys/statvfs.h> function: int statvfs(const char *path, struct statvfs *buf); structure definition struct statvfs { unsigned long f_bsize; /* file system block size */ unsigned long f_frsize; /* fragment size */ fsblkcnt_t f_blocks; /* size of fs in f_frsize units */ fsblkcnt_t f_bfree; /* # free blocks */ fsblkcnt_t f_bavail; /* # free blocks for unprivileged users */ fsfilcnt_t f_files; /* # inodes */ fsfilcnt_t f_ffree; /* # free inodes */ fsfilcnt_t f_favail; /* # free inodes for unprivileged users */ unsigned long f_fsid; /* file system ID */ unsigned long f_flag; /* mount flags */ unsigned long f_namemax; /* maximum filename length */ };