![df 在调用特定设备时给出不同的结果](https://linux22.com/image/674167/df%20%E5%9C%A8%E8%B0%83%E7%94%A8%E7%89%B9%E5%AE%9A%E8%AE%BE%E5%A4%87%E6%97%B6%E7%BB%99%E5%87%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BB%93%E6%9E%9C.png)
df
如果我不带参数调用它或者以设备作为参数调用它,我会得到同一设备的不同输出。运行 Ubuntu 14.04。
无参数:
➜ ~ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4046644 4 4046640 1% /dev
tmpfs 811488 2532 808956 1% /run
/dev/sdb1 299337328 39634680 244474080 14% /
/dev/sda1 2884152536 1309806024 1427816876 48% /media/videos
...
使用/dev/sdb1
作为参数,我得到了同一设备的不同结果:
➜ ~ df /dev/sdb1
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4046644 4 4046640 1% /dev
它/dev/sda1
似乎有效:
➜ ~ df /dev/sda1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 2884152536 1309806024 1427816876 48% /media/videos
/dev/sdb1
是安装操作系统的地方。
为什么 的输出不同/dev/sdb1
但 却有效/dev/sda1
?
输出自ls
➜ ~ ls -l /dev/sda1 /dev/sdb1
brw-rw---- 1 root disk 8, 1 tammi 5 21:13 /dev/sda1
brw-rw---- 1 root disk 8, 17 tammi 5 21:13 /dev/sdb1
输出自tune2fs
➜ # tune2fs -l /dev/sda1 | grep 'Last mount'
Last mounted on: /media/videos
Last mount time: Tue Jan 5 21:13:15 2016
➜ # tune2fs -l /dev/sdb1 | grep 'Last mount'
Last mounted on: /
Last mount time: Tue Jan 5 21:13:14 2016
➜ ~ last reboot
reboot system boot 3.13.0-62-generi Tue Jan 5 21:13 - 02:04 (1+04:51)
更多系统信息:
➜ ~ uname -svpio
Linux #102-Ubuntu SMP Tue Aug 11 14:29:36 UTC 2015 x86_64 x86_64 GNU/Linux
➜ ~ X=$(df | sed -rn 's,^(/[^ ]*) .*,\1,p') ; echo $X
/dev/sdb1
/dev/sda1
➜ ~ df | grep ^/
/dev/sdb1 299337328 39693968 244414792 14% /
/dev/sda1 2884152536 1309897424 1427725476 48% /media/videos
➜ ~ ls -ld /dev/sdb1 ; ls -ld /dev/sda1
brw-rw---- 1 root disk 8, 17 tammi 5 21:13 /dev/sdb1
brw-rw---- 1 root disk 8, 1 tammi 5 21:13 /dev/sda1
➜ ~ df /dev/sdb1 | tail -1; df /dev/sda1 | tail -1
udev 4046644 4 4046640 1% /dev
/dev/sda1 2884152536 1309897424 1427725476 48% /media/videos
➜ ~ df | sed -rn 's,^(/[^ ]*) .*,<\1>,p'
</dev/sdb1>
</dev/sda1>
答案1
为此使用挂载点而不是文件系统。
因此,按照您现在所拥有的,
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4046644 4 4046640 1% /dev
tmpfs 811488 2532 808956 1% /run
/dev/sdb1 299337328 39634680 244474080 14% /
/dev/sda1 2884152536 1309806024 1427816876 48% /media/videos
如果你想正确查询/dev/sda1你应该使用:
df /media/videos
如果你想正确查询/dev/sdb1你应该使用:
df /
我认为发生的事情是,当您执行 df /dev/sdb1 时,它会将其解释为 df /dev,这是 udev 的挂载。至于 df /dev/sda1 的工作 - 我将把它归档到“我是否知道”的 bin 中。看起来像是一个错误。
为了进一步测试 - 如果您尝试以下操作,您会发现两者都会失败:
df tmpfs
df udev