df
我想比较从-h 到lsblk
因为我们执行的大小之间的磁盘大小resize2fs
,并且在resize2fs
我想df -h
根据从 的大小检查大小之后lablk
所以我们有以下内容lsblk
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 4G 0 disk /data1
sdc 8:32 0 4G 0 disk /data2
sdd 8:48 0 4G 0 disk /data3
来自 df -h
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 3.9G 22M 3.8G 1% /data1
/dev/sdc 3.9G 18M 3.8G 1% /data2
/dev/sdd 3.9G 18M 3.8G 1% /data3
所以我在 bash 脚本中做了以下操作
[[ ` lsblk | grep "^sdb" | awk '{print $4}' ` == ` df -h | awk -v disk_var="sdb" '$1 ~ disk_var' | awk '{print $2}' ` ]] && echo "val are equal " || echo "val are not equal "
所以我从上面得到的值不相等,尽管这些值应该是相同的
有什么建议如何使用“ df -h
”来获得可读的大小值,我们可以将其与来自的值进行比较lsblk
?
我们正在开发 rhel 7.6 服务器
答案1
您可以创建变量来启动
df=$(df -h | awk '/sdb/{printf "%.0f\n", $2}' | tr -d 'M|G|T')
blk=$(lsblk | awk '/sdb/ {printf "%.0f\n", $4}' | tr -d 'M|G|T')
然后与他们一起运行测试。
[[ $blk -eq $df ]] && echo "val are equal " || echo "val are not equal "
答案2
从各自的手册:
df 显示包含每个文件名参数的文件系统上的可用磁盘空间量。
lsblk 列出有关所有可用或指定块设备的信息。
IOW,df
显示每个分区可以容纳多少实际数据,同时lsblk
显示原始块设备及其大小。
同时,您可以使用适当的字段lsblk
显示相同的信息:df
lsblk -b -o NAME,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINT
并且df -B1
完全匹配。
我只是df
对可用百分比值的可用空间感到困惑。他们看起来很不相干。例如,对于我的根分区,就原始字节而言,31.9%
当四舍五入时,我得到的结果等于32%
并匹配lsblk
输出,但df
表示34%
结果相差甚远。