特殊ファイルのブロックサイズを決定できる必要があります。
たとえば、/dev/sda
デバイスサイズを提供するコマンドが必要です。 (サイズは記憶装置なので容量を意味します。)
理由:
以下を使用してデバイスに情報を保存できます。
echo "12345" >/dev/sda # root として実行する必要があります。
(しかし、データに興味がない場合は、そのコマンドを実行しないでください。)
ところで、デバイスにどれだけのデータを保存できるかを知る必要がありますが、どうすればよいかわかりません。
答え1
blockdev
ブロックデバイスのプロパティを設定/インポートする方法を提供します。サイズをバイト単位で取得するには:
blockdev --getsize64 /dev/sda
あるいは、512バイトのブロック単位で測定されたsdaサイズを提供するなど、/sys/block/<device>
いくつかの情報がディレクトリの下に提供されます。 sda1パーティションサイズをcat /sys/block/sda/size
参照してください/sys/block/sda/sda1/size
。
KiB単位のsdaサイズ
echo $[ $(cat /sys/block/sda/size) / 2 ]
sdaサイズ(バイト)
echo $[ $(cat /sys/block/sda/size) * 512 ]
答え2
解析によりfdisk -l /dev/sda
正確な結果を得ることができます。
Disk /dev/sda: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bd83f
Device Boot Start End Blocks Id System
/dev/sda1 * 1 8009 64325632 83 Linux
/dev/sda2 8009 8355 2780161 5 Extended
/dev/sda5 8009 8355 2780160 82 Linux swap / Solaris
答え3
普遍的なクロスプラットフォームの答えはないと思います。 Linuxでは、情報は/proc/partitions
名前にもかかわらず、PCスタイルのパーティションだけでなく、すべての(ほとんど?)ブロックデバイスも含みます。
awk '$4 == "sda" {print $3}' /proc/partitions
答え4
/proc/partitions
あなたが探しているデータがあります。 fdiskがデータをインポートする場所です。
たとえば、私のシステムでは
major minor #blocks name
8 0 976762584 sda
8 1 8385898 sda1
8 2 968374102 sda2
8 16 976762584 sdb
8 17 8385898 sdb1
8 18 968374102 sdb2
8 32 976762584 sdc
8 33 8385898 sdc1
8 34 968374102 sdc2
8 48 976762584 sdd
8 49 8385898 sdd1
8 50 968374102 sdd2
9 2 2905122048 md2