Command-Line

如何獲取塊特殊文件的大小?

  • April 7, 2011

我需要能夠確定塊特殊文件的大小。

例如,給定/dev/sda,我需要一個提供設備大小的命令。(大小是指容量,因為這是一個儲存設備。)


理由:

我可以在設備中儲存資訊:

echo "12345" >/dev/sda #需要以root身份執行

(順便說一句,不要執行那個命令……除非你不關心你的數據。)

但是,我需要知道我可以在設備上儲存多少數據,但我不知道該怎麼做。

blockdev提供了一種設置/獲取塊設備屬性的方法。要以字節為單位獲取大小:

blockdev --getsize64 /dev/sda

或者,一些資訊可在/sys/block/<device>目錄下獲得,例如cat /sys/block/sda/size給出以 512 字節塊為單位測量的 sda 大小。參見/sys/block/sda/sda1/sizesda1 分區大小。

對於 KiB 中的 sda 大小

echo $[  $(cat /sys/block/sda/size) / 2 ]

以字節為單位的 sda 大小

echo $[  $(cat /sys/block/sda/size) * 512 ]

解析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

引用自:https://unix.stackexchange.com/questions/10713