Una forma ingeniosa es eludir la necesidad de sudo
leyendo el registro del sistema con:
dmesg | grep blocks
Tenga en cuenta que esto podría no ser lo ideal, por lo que su millaje puede variar...
Si desea el tamaño en bytes y solo el valor, p. para secuencias de comandos:
lsblk -b --output SIZE -n -d /dev/sdX
12220202
-b :Salida en bytes.
-n :Sin encabezados. Sólo queremos el valor numérico puro.
--tamaño de salida :Solo imprima la columna de tamaño.
-d /dev/sdXn :El dispositivo de qué tamaño queremos saber. X es, por ejemplo, d, n es, por ejemplo, 1 para la primera partición del disco d.
Ventajas:
- no se necesitan privilegios de root
- no se necesita grep
- lsblk está disponible en la mayoría de los sistemas Linux
Si desea usar esa información en un script, por ejemplo, usando
sudo blockdev --getsz /dev/sda
podría ser más fácil que fdisk o hdparm ya que solo le brinda la información relevante (simplemente multiplíquela por 512). Sin embargo, también requerirá sudo.
Por supuesto, podría cambiar la configuración de sudo de modo que permita ejecutar este comando específico sin pedir la contraseña (supongo que blockdev --getsz
es bastante seguro incluso cuando lo ejecuta un usuario normal sin privilegios).
Esto se haría agregando la siguiente línea a /etc/sudoers
:
ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*
Cuando edite este archivo, asegúrese de usar el comando sudo visudo
y no su editor habitual. De lo contrario, es muy fácil cometer un error de sintaxis, lo que provocaría que ya no pueda usar sudo (tendría que reiniciar en modo de rescate para solucionarlo).