据我所知,这df -a
包括“伪、重复和无法访问的文件系统”。这会导致相当多的坐骑被隐藏,例如:
udev 8055632 0 8055632 0% /dev
devpts 0 0 0 - /dev/pts
-a
...除非我通过该选项,否则不会出现。但是,我对未通过时包含的内容感兴趣-a
:
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 1624300 3292 1621008 1% /run
/dev/sda1 122485360 12664524 103552780 11% /
tmpfs 8121496 60308 8061188 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
/dev/sdb1 460366888 154205092 282702932 36% /home
tmpfs 1624296 1688 1622608 1% /run/user/1000
/dev/sdc2 488282108 324162964 164119144 67% /media/jez/Picard - Main [C]
从我的角度来看,三个“真实”分区是sda1
、sdb1
、 和 ,sdc2
它们指向物理磁盘上的实际分区。如何df
决定其默认输出还包括一些其他坐骑;显然tmpfs
是?难道不是tmpfs
“伪”文件系统吗?
答案1
临时文件系统不是伪文件系统,它是一个将其内容存储在虚拟内存中的真实文件系统。不同之处在于伪文件系统提供了表示真实的文件系统直接存储人工制品。
重要的是df
,伪文件系统无法以通常的方式耗尽存储空间,因为无法直接向其中添加数据。真实文件系统能存储空间不足,这才是df
真正“关心”的。由于 tmpfs 文件系统可能会填满,因此默认情况下会列出它们。
答案2
(使用 GNU 工作,df
因为 POSIX 没有该-a
标志。)默认情况下df
将显示已安装的具有非零大小的文件系统。
例子
df -ah
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.9G 5.6G 2.0G 74% /
devtmpfs 458M 0 458M 0% /dev
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
tmpfs 462M 1.1M 461M 1% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 185M 1.5M 184M 1% /run
tmpfs 5.0M 8.0K 5.0M 1% /run/lock
cgroup2 0 0 0 - /sys/fs/cgroup
systemd-1 - - - - /proc/sys/fs/binfmt_misc
mqueue 0 0 0 - /dev/mqueue
sunrpc 0 0 0 - /run/rpc_pipefs
debugfs 0 0 0 - /sys/kernel/debug
tracefs 0 0 0 - /sys/kernel/tracing
fusectl 0 0 0 - /sys/fs/fuse/connections
configfs 0 0 0 - /sys/kernel/config
ramfs 0 0 0 - /run/credentials/systemd-sysctl.service
ramfs 0 0 0 - /run/credentials/systemd-sysusers.service
ramfs 0 0 0 - /run/credentials/systemd-tmpfiles-setup-dev.service
/dev/mmcblk0p1 63M 22M 42M 35% /boot
ramfs 0 0 0 - /run/credentials/systemd-tmpfiles-setup.service
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
tmpfs 93M 0 93M 0% /run/user/1001
默认情况下,大小为零的条目(第二列)将被省略,即这些文件系统:
Filesystem Size Used Avail Use% Mounted on
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
cgroup2 0 0 0 - /sys/fs/cgroup
systemd-1 - - - - /proc/sys/fs/binfmt_misc
mqueue 0 0 0 - /dev/mqueue
sunrpc 0 0 0 - /run/rpc_pipefs
debugfs 0 0 0 - /sys/kernel/debug
tracefs 0 0 0 - /sys/kernel/tracing
fusectl 0 0 0 - /sys/fs/fuse/connections
configfs 0 0 0 - /sys/kernel/config
ramfs 0 0 0 - /run/credentials/systemd-sysctl.service
ramfs 0 0 0 - /run/credentials/systemd-sysusers.service
ramfs 0 0 0 - /run/credentials/systemd-tmpfiles-setup-dev.service
ramfs 0 0 0 - /run/credentials/systemd-tmpfiles-setup.service
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
导致此处显示的默认输出:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.9G 5.6G 2.0G 74% /
devtmpfs 458M 0 458M 0% /dev
tmpfs 462M 1.1M 461M 1% /dev/shm
tmpfs 185M 1.5M 184M 1% /run
tmpfs 5.0M 8.0K 5.0M 1% /run/lock
/dev/mmcblk0p1 63M 22M 42M 35% /boot
tmpfs 93M 0 93M 0% /run/user/1001
这与其文档不一致,来自info
和man
,其中说,
不带参数,
df
报告所有当前安装的文件系统(所有类型)上已使用和可用的空间
但是也
-a
--all
在列表中包含虚拟、重复或无法访问的文件系统,默认情况下会忽略这些系统。
这在源代码(coreutils,df.c
)中得到了证实。以下fsu_blocks
是文件系统块的数量,show_all_fs
由命令行上明确列出的文件系统设置-a
:show_listed_fs
if (fsu.fsu_blocks == 0 && !show_all_fs && !show_listed_fs)
return;