例如,样本df
命令输出为
Filesystem MB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 512.00 322.96 37% 4842 7% /
/dev/hd2 4096.00 717.96 83% 68173 29% /usr
/dev/hd9var 1024.00 670.96 35% 6385 4% /var
/dev/hd3 5120.00 0.39 100% 158 10% /tmp
现在,如果我指定/tmp/dummy.txt
之类的内容,我应该能够获得/dev/hd3
或hd3
。
编辑:谢谢你的回答。但探究/proc
会变得非常繁琐。任何人都可以建议我一些内部可以做同样的系统调用吗?
答案 0 :(得分:4)
df `pwd`
...超级简单,有效,并且还告诉你有多少空间......
[stackuser@rhel62 ~]$ pwd
/home/stackuser
[stackuser@rhel62 ~]$ df `pwd`
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda7 250056240 196130640 41223408 83% /
[stackuser@rhel62 ~]$ cd isos
[stackuser@rhel62 isos]$ pwd
/home/stackuser/isos
[stackuser@rhel62 isos]$ df `pwd`
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 103216920 90417960 11750704 89% /mnt/sda5
[stackuser@rhel62 isos]$ df $(pwd)
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 103216920 90417960 11750704 89% /mnt/sda5
...这首先是挂载点查询的可能原因。
请注意,这些是反引号,并且提供对斜杠和扩展的进一步控制的备用(现代)方法是df $(pwd)
。在bash
,dash
,busybox
,zsh
上正确测试和遍历符号链接。请注意,tcsh
不会喜欢$(...)
,因此请坚持使用csh-variants中较旧的反引号样式。
pwd
和df
还有额外的开关可供进一步欣赏。
答案 1 :(得分:3)
在Linux上,使用/proc/<pid>/mounts
来访问给定pid
或/proc/self/mounts
(使用文字self
)的挂载点列表以引用自己。 (cat
/proc/self/mount*
个文件,看看它们是什么样的。)
然后,对于每个文件系统,您可以进行statfs()
调用并将f_fsid
f_fsid
字段与相关路径中较早的statfs()
的结果进行比较。 fsid's
匹配后,您找到了相应的已安装文件系统,并可以使用/proc/self/mounts
中的其他数据。 (但是,请参阅statfs(2)
,了解对f_fsid
执行任何有用的操作的限制。)