00. 目录
01. 命令概述
df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
02. 命令格式
用法:df [选项]... [文件]...
- 1
03. 常用选项
GNU 参数说明
-a, --all
列出包括BLOCK为0的文件系统
--block-size=SIZE use SIZE-byte blocks
指定块的大小
-h,--huma-readable"
用常见的格式显示出大小(例如:1K 234M 2G)
-H,--si"
同上,但是这里的1k等于1000字节而不是1024字节
-i, --inodes
用信息索引点代替块表示使用状况
-k, --kilobytes
指定块大小等于1024字节来显示使用状况
-l, --local
只显示本地文件系统使用状况
-m, --megabytes
以指定块大小等于1048576字节(1M)来显示使用状况
--no-sync
在取得使用信息前禁止调用同步 (default)
-P, --portability
使用POSIX格式输出
--sync 在取得使用信息前调用同步
-t, --type=TYPE
只显示指定类型(TYPE)的文件系统
-T, --print-type
输出每个文件系统的类型
-x, --exclude-type=TYPE
只显示指定类型(TYPE)之外的文件系统.
-v (忽略)
--help 输出该命令的帮助信息并退出
--version
输出版本信息并退出
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
04. 参考示例
4.1 查看系统磁盘设备,默认是KB为单位
[deng@redhat ~]$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 100408424 13248288 87160136 14% /
devtmpfs 999212 0 999212 0% /dev
tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs 1015084 18904 996180 2% /run
tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
/dev/sda1 201380 135376 66004 68% /boot
.host:/ 209715196 129121680 80593516 62% /mnt/hgfs
tmpfs 203020 4 203016 1% /run/user/42
tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
说明:
linux中df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3,4列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的挂载点。
4.2 用常见的格式显示出大小(例如:1K 234M 2G)
[deng@redhat ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 96G 13G 84G 14% /
devtmpfs 976M 0 976M 0% /dev
tmpfs 992M 514M 478M 52% /dev/shm
tmpfs 992M 19M 973M 2% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 197M 133M 65M 68% /boot
.host:/ 200G 124G 77G 62% /mnt/hgfs
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 56K 199M 1% /run/user/1000
[deng@redhat ~]$
[deng@redhat ~]$ df -H
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 103G 14G 90G 14% /
devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs 1.1G 539M 501M 52% /dev/shm
tmpfs 1.1G 20M 1.1G 2% /run
tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/sda1 207M 139M 68M 68% /boot
.host:/ 215G 133G 83G 62% /mnt/hgfs
tmpfs 208M 4.1k 208M 1% /run/user/42
tmpfs 208M 58k 208M 1% /run/user/1000
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
注意:df -H 但是这里的1k等于1000字节而不是1024字节
4.3 查看全部文件系统
[deng@redhat ~]$ df -a
文件系统 1K-块 已用 可用 已用% 挂载点
rootfs - - - - /
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 999212 0 999212 0% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 1015084 526292 488792 52% /dev/shm
devpts 0 0 0 - /dev/pts
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
说明:系统里面存在很多特殊的文件系统,这些比较特殊的文件系统几乎都是在内存当中,(如/proc挂载点),所以,这些特殊文件系统都不会占据硬盘空间。
4.4 显示指定文件所在分区的磁盘使用情况
[deng@redhat ~]$ df share/
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 100408424 13248296 87160128 14% /
[deng@redhat ~]$
- 1
- 2
- 3
- 4
4.5 以inode模式来显示磁盘使用情况
[deng@redhat ~]$ df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 50228736 231953 49996783 1% /
devtmpfs 249803 394 249409 1% /dev
tmpfs 253771 200 253571 1% /dev/shm
tmpfs 253771 953 252818 1% /run
tmpfs 253771 16 253755 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
.host:/ 0 0 0 - /mnt/hgfs
tmpfs 253771 6 253765 1% /run/user/42
tmpfs 253771 26 253745 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.6 显示指定类型磁盘
[deng@redhat ~]$ df -t tmpfs
文件系统 1K-块 已用 可用 已用% 挂载点
tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs 1015084 18904 996180 2% /run
tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
tmpfs 203020 4 203016 1% /run/user/42
tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.7 列出各文件系统的i节点使用情况
[deng@redhat ~]$ df -ai
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
rootfs - - - - /
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 249803 394 249409 1% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 253771 200 253571 1% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 253771 953 252818 1% /run
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
4.8 输出每个文件系统的类型
[deng@redhat ~]$ df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/sda3 xfs 100408424 13248320 87160104 14% /
devtmpfs devtmpfs 999212 0 999212 0% /dev
tmpfs tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs tmpfs 1015084 18904 996180 2% /run
tmpfs tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
/dev/sda1 xfs 201380 135376 66004 68% /boot
.host:/ vmhgfs 209715196 129121680 80593516 62% /mnt/hgfs
tmpfs tmpfs 203020 4 203016 1% /run/user/42
tmpfs tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.9 只显示本地文件系统使用状况
[deng@redhat ~]$ df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 96G 13G 84G 14% /
devtmpfs 976M 0 976M 0% /dev
tmpfs 992M 514M 478M 52% /dev/shm
tmpfs 992M 19M 973M 2% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 197M 133M 65M 68% /boot
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 56K 199M 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.10 指定块大小等于1024字节来显示使用状况
[deng@redhat ~]$ df -k
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 100408424 13248308 87160116 14% /
devtmpfs 999212 0 999212 0% /dev
tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs 1015084 18904 996180 2% /run
tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
/dev/sda1 201380 135376 66004 68% /boot
.host:/ 209715196 129121680 80593516 62% /mnt/hgfs
tmpfs 203020 4 203016 1% /run/user/42
tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.11 POSIXLY_CORRECT的应用
[root@localhost ~]# df #默认情况是1024
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 16036224 2750464 12458012 19% /
/dev/sda1 295561 16911 263390 7% /boot
tmpfs 1028272 0 1028272 0% /dev/shm
[root@localhost ~]# export POSIXLY_CORRECT=true #设置POSIXLY_CORRECT为true
[root@localhost ~]# df #POSIXLY_CORRECT为true时默认512
Filesystem 512B-blocks Used Available Use% Mounted on
/dev/sda2 32072448 5500928 24916024 19% /
/dev/sda1 591122 33822 526780 7% /boot
tmpfs 2056544 0 2056544 0% /dev/shm
[root@localhost ~]# unset POSIXLY_CORRECT #取消设置POSIXLY_CORRECT
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 16036224 2750464 12458012 19% /
/dev/sda1 295561 16911 263390 7% /boot
tmpfs 1028272 0 1028272 0% /dev/shm
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4.12 使用POSIX格式输出
[deng@redhat ~]$ df -P
文件系统 1024-块 已用 可用 配额 挂载点
/dev/sda3 100408424 13248352 87160072 14% /
devtmpfs 999212 0 999212 0% /dev
tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs 1015084 18904 996180 2% /run
tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
/dev/sda1 201380 135376 66004 68% /boot
.host:/ 209715196 129121680 80593516 62% /mnt/hgfs
tmpfs 203020 4 203016 1% /run/user/42
tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 100408424 13248352 87160072 14% /
devtmpfs 999212 0 999212 0% /dev
tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs 1015084 18904 996180 2% /run
tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
/dev/sda1 201380 135376 66004 68% /boot
.host:/ 209715196 129121680 80593516 62% /mnt/hgfs
tmpfs 203020 4 203016 1% /run/user/42
tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
4.13 指定单位大小
[deng@redhat ~]$ df -B 1k #以1K为单位
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 100408424 13248312 87160112 14% /
devtmpfs 999212 0 999212 0% /dev
tmpfs 1015084 526292 488792 52% /dev/shm
tmpfs 1015084 18904 996180 2% /run
tmpfs 1015084 0 1015084 0% /sys/fs/cgroup
/dev/sda1 201380 135376 66004 68% /boot
.host:/ 209715196 129121680 80593516 62% /mnt/hgfs
tmpfs 203020 4 203016 1% /run/user/42
tmpfs 203020 56 202964 1% /run/user/1000
[deng@redhat ~]$ df --block-size 1m #以1M为单位
文件系统 1M-块 已用 可用 已用% 挂载点
/dev/sda3 98056 12938 85118 14% /
devtmpfs 976 0 976 0% /dev
tmpfs 992 514 478 52% /dev/shm
tmpfs 992 19 973 2% /run
tmpfs 992 0 992 0% /sys/fs/cgroup
/dev/sda1 197 133 65 68% /boot
.host:/ 204800 126096 78705 62% /mnt/hgfs
tmpfs 199 1 199 1% /run/user/42
tmpfs 199 1 199 1% /run/user/1000
[deng@redhat ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
05. 附录
内核态启动
内核启动流程
内核启动流程包含汇编启动阶段和C语言启动阶段2部分,如图1所示。汇编启动阶段完成CPU初始设置,关闭dcache/icache,使能FPU及neon,设置MMU建立虚实地址映射,设置系统栈,清理bss段,调用C语言main函数等。C语言启动阶段包含OsMain函数及开始调度等,其中如图1所示,OsMain函数用于内核基础初始化和架构、板级初始化等,其整体由内核启动框架主导初始化流程,图中右边区域为启动框架中可接受外部模块注册启动的阶段,各个阶段的说明如下表1所示。
图1 内核启动流程图
表1 启动框架层级
class="table-box">层级 | 说明 |
---|---|
LOS_INIT_LEVEL_EARLIEST | 最早期初始化 说明:不依赖架构,单板以及后续模块会对其有依赖的纯软件模块初始化 例如:Trace模块 |
LOS_INIT_LEVEL_ARCH_EARLY | 架构早期初始化 说明:架构相关,后续模块会对其有依赖的模块初始化,如启动过程中非必需的功能,建议放到LOS_INIT_LEVEL_ARCH层 |
LOS_INIT_LEVEL_PLATFORM_EARLY | 平台早期初始化 说明:单板平台、驱动相关,后续模块会对其有依赖的模块初始化,如启动过程中必需的功能,建议放到LOS_INIT_LEVEL_PLATFORM层 例如:uart模块 |
LOS_INIT_LEVEL_KMOD_PREVM | 内存初始化前的内核模块初始化 说明:在内存初始化之前需要使能的模块初始化 |
LOS_INIT_LEVEL_VM_COMPLETE | 基础内存就绪后的初始化 说明:此时内存初始化完毕,需要进行使能且不依赖进程间通讯机制与系统进程的模块初始化 例如:共享内存功能 |
LOS_INIT_LEVEL_ARCH | 架构后期初始化 说明:架构拓展功能相关,后续模块会对其有依赖的模块初始化 |
LOS_INIT_LEVEL_PLATFORM | 平台后期初始化 说明:单板平台、驱动相关,后续模块会对其有依赖的模块初始化 例如:驱动内核抽象层初始化(mmc、mtd) |
LOS_INIT_LEVEL_KMOD_BASIC | 内核基础模块初始化 说明:内核可拆卸的基础模块初始化 例如:VFS初始化 |
LOS_INIT_LEVEL_KMOD_EXTENDED | 内核扩展模块初始化 说明:内核可拆卸的扩展模块初始化 例如:系统调用初始化、ProcFS初始化、Futex初始化、HiLog初始化、HiEvent初始化、LiteIPC初始化 |
LOS_INIT_LEVEL_KMOD_TASK | 内核任务创建 说明:进行内核任务的创建(内核任务,软件定时器任务) 例如:资源回收系统常驻任务的创建、SystemInit任务创建、CPU占用率统计任务创建 |
LOS_INIT_LEVEL_FINISH | 内核初始化完成 |
评论记录:
回复评论: