lsblkディスクサイズ値をdf -hのディスクサイズ値と比較する方法

lsblkディスクサイズ値をdf -hのディスクサイズ値と比較する方法

df-hからlsblk サイズ間のディスクサイズを比較したいと思いますresize2fs。その後はサイズに基づいてサイズを確認したいとresize2fs思います。df -hlablk

だから我々は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は、rawブロックデバイスとそのサイズdfとともに、各パーティションが保持できる実際のデータ量を示しています。lsblk

同時に、対応するフィールドを使用してlsblk同じ情報を表示できます。df

lsblk -b -o NAME,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINTそしてdf -B1正確に一致します。

df空き容量と空き率の値が混乱しています。彼らはとても無関係に見えました。たとえば、ルートパーティションの場合、rawバイトの面で四捨五入すると、出力と同じで一致する31.9%結果が得られますが、表現は大きく異なります。32%lsblkdf34%

関連情報