显示已用磁盘空间,包括bash中的预留磁盘空间

时间:2017-10-06 14:42:01

标签: linux bash diskspace stat df

我需要将已用过的磁盘空间显示为(使用+保留),我已创建下面的脚本并计划添加已使用和保留,有没有更好的方法来执行此操作?

我需要以GB格式显示“使用的磁盘总数”。

#!/bin/sh

output=`df -h --output=source,size,used,avail /dev/vd* /dev/disk/* -x devtmpfs | grep -v 'Filesystem' | awk '{printf $1 "\t" $2 "\t" $3 "\t" $4 "\n" }'`
while read -r line; do
    diskname=`echo $line|awk -F " " '{print $1}'`
    reserved=`tune2fs -l $diskname|grep -i "Reserved block count"|awk -F ":" '{print $2}'`
    reservedInGB=`echo "$((((( $reserved * 4096 ) / 1024 ) / 1024 )))"|bc -l`
    total=`echo $line|awk -F " " '{print $2}'`
    used=`echo $line|awk -F " " '{print $3}'`
    free=`echo $line|awk -F " " '{print $4}'`
    echo $diskname $total $used $free $reservedInGB
done <<< "$output"

2 个答案:

答案 0 :(得分:0)

我的本​​地模拟没有--output,但尝试这样的事情 - 调整到规格。

df -PB 1GB -x devtmpfs /tmp | grep -v ^Filesystem |
   while read mnt size used avail cap disk
   do printf "%-10s %4d %4d %4d\n" $disk $size $used $avail
   done

请注意,mount中的嵌入空格会破坏它,但它会在使用df的数据生成中处理转换为GB的权限。由于我不能--output,我认为没有理由不使用-P来确保挂载点及其数据出现在同一行。进行读取,只要字段正确着陆,重新排序也很容易。

答案 1 :(得分:0)

尝试类似的东西

df -h --output=source,size,used,avail | tail -n +2 | \
while read line; \
do printf "%s\t%s\n" "$line" \
"your calc with tune2fs and ${line%%[[:space:]]*}";done