특수 파일의 블록 크기를 결정할 수 있어야 합니다.
예를 들어, /dev/sda
장치 크기를 제공하는 명령이 필요합니다. (크기는 저장 장치이므로 용량을 의미합니다.)
이유:
다음을 통해 장치에 정보를 저장할 수 있습니다.
echo "12345" >/dev/sda # 루트로 실행해야 합니다.
(그런데, 데이터에 관심이 없다면 해당 명령을 실행하지 마세요.)
그런데 기기에 얼마나 많은 데이터를 저장할 수 있는지 알아야 하는데 어떻게 해야 할지 모르겠습니다.
답변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