我需要将已用过的磁盘空间显示为(使用+保留),我已创建下面的脚本并计划添加已使用和保留,有没有更好的方法来执行此操作?
我需要以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"
答案 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