序言:
Linux下存在很多命令,其中也存在很多获取容量的命令
开发应用的经常会碰到一些需求,例如:
1. 获取下当前设备存储空间,例如,总大小多少,剩余大小多少之类
类似,还有检测U盘(外部存储器)的容量怎么样,总大小,剩余之类等
2、判断U盘是否插入,或判定USB接口是否插入
或判定哪个USB插入哪个设备
3. 甚至,通过指定USB口去控制外部设备连接(开关电源)
4. 获取某个文件夹的大小
等等之类的,如果可以shell命令获取,也是一种比较好的解决办法,甚至可以编写脚本
正文:
df命令
原意:disk free ,磁盘剩余空间的意思
最常见的是 df -h

一般来说也够用了,可以看到挂载U盘使用情况,也可以看到内部存储器使用情况
这个是显示分区的情况,如果存在多个分区且要获取总体的大小,要进行累计,不太方便。
fdisk命令
最常见的 fdisk -l

显然,这个看总体情况,会比df -h更方便点,还有簇的信息
这个命令还有个额外的好处:
外部SD卡是插在读卡器上,读卡器一直插在设备上,然后拔出SD卡,此时fdisk命令是获取不到SD卡信息的(这样理论上就可以检测SD卡是否被拔掉);而df -h 是判断不出来的,也就是当SD卡插着的时候,与拔掉后的信息都能获取到。
这里补充个问题:
/dev/sda 与 /dev/sda1 有什么关系?
注意:fdisk 要慎用。不小心会格式化掉盘的
udevadm info 命令
这个是检测USB接口的命令
如果要跟USB存储器(U盘)关联起来
往往需要 udevadm info --name=/dev/sda 这样的形式,如下图

很详细,这个可以获取到该存储器是插入到哪个USB口
cat /proc/partitions

这个命令比 fdisk 要简单点,信息也少一些,但仅用于容量或是否插入的判定,是足够,建议使用
也fdisk 格式化的潜在风险
du -h
可以获取某个文件的大小,可用大小之类的。
一般这样:du -h --max-depth=0 /userdata/log/
那么返回如下:1.3G /userdata/log/
还有:du -h --max-depth=1 /userdata/log/ 这个跟上面区别,是否列出子文件的大小信息
文中问题: /dev/sda 与 /dev/sda1 有什么关系?
/dev/sda 是挂载节点
/dev/sda1 是设备分区1的信息
例如,挂载一个移动硬盘,硬盘有3个分区
那么 /dev/sda
/dev/sda1 /dev/sda2 /dev/sda3