22 votos

¿Obtener el tamaño total de mi disco duro en Linux, utilizando la línea de comandos, sin permisos de root?

Estoy tratando de averiguar el tamaño total de mi disco duro utilizando df -h pero imprime el tamaño de cada partición y requiere sudo .

¿Hay alguna manera de obtener el tamaño total de mi disco duro utilizando la línea de comandos, sin requerir permiso de root?

5 votos

Nota: El uso de df es impreciso si el disco tiene espacio sin particionar, no todas las particiones están montadas (por ejemplo, algunas particiones de Windows en la misma unidad) o algunas particiones no están montadas directamente sino indirectamente a través de RAID, LVM o LUKS (cifrado). También se perderá la(s) partición(es) de intercambio. Así que recomiendo no para usar df para averiguar el tamaño del disco duro.

15voto

Sirex Puntos 7949

Una manera de evitar la necesidad de sudo leyendo el registro del sistema con:

dmesg | grep blocks

Tenga en cuenta que esto podría no ser lo ideal, así que su kilometraje puede variar...

0 votos

Esta respuesta sería mucho mejor si explicara lo que hay que esperar o lo que se requiere para que el comando imprima la información deseada. En caso de que "el kilometraje de alguien varía" pueden no reconocerlo. Esto ha ocurrido al menos una vez .

0 votos

Lo que se espera son los detalles de la unidad como la pregunta formulada, pero está utilizando los mensajes de registro que pueden variar entre los sistemas por lo que no es posible dar orientación más allá de sugerir a probarlo. En la mayoría de los sistemas dará la información solicitada la mayor parte de las veces.

11voto

Sean Loony Puntos 1

Si quieres el tamaño en bytes y sólo el valor, por ejemplo, para el scripting:

lsblk -b --output SIZE -n -d /dev/sdX
12220202

-b : Salida en bytes.
-n : No hay encabezados. Sólo queremos el valor numérico puro.
-- salida TAMAÑO : Sólo imprime la columna de tamaño.
-d /dev/sdXn : El dispositivo cuyo tamaño queremos conocer. 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
  • grep no es necesario
  • lsblk está disponible en la mayoría de los sistemas linux

0 votos

¿Por qué usar eso en lugar de algo como blockdev --getsize64 /dev/sdx ?

4voto

Philipp Claßen Puntos 206
cat /sys/block/sda/size

Pero el tamaño está en la unidad basada en bloques
He encontrado esta respuesta aquí .
Otras soluciones aquí .

O puedes probar udisks

udisks --show-info /dev/sda | egrep "^[[:space:]]*size" | awk '{print $2}'

4voto

Philipp Wendler Puntos 315

Si desea utilizar esa información en un script por ejemplo, utilizando

sudo blockdev --getsz /dev/sda

puede ser más fácil que fdisk o hdparm, ya que sólo te da la información relevante (sólo multiplica por 512). Sin embargo, también requerirá sudo.

Por supuesto, podrías cambiar la configuración de sudo de forma 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 añadiendo la siguiente línea a /etc/sudoers :

ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*

Cuando edite este archivo, asegúrese de utilizar el comando sudo visudo y no su editor habitual. De lo contrario, es muy fácil cometer un error de sintaxis, lo que resultaría en no poder usar más sudo (tendría que reiniciar en modo de rescate para solucionarlo).

2 votos

De la página man: --getsize64 Print device size in bytes. . También aquí .

2voto

Dave Sherohman Puntos 3954

O tienes una mala instalación o un administrador de sistemas absurdamente paranoico. Yo he nunca oído hablar de df requiriendo privilegios de root antes. Y he trabajado con bastantes sabores diferentes de sistemas operativos tipo unix/unix.

En cualquier caso, esto le dará el tamaño total de todas las particiones del disco (primero df columna es /dev/hd... o /dev/sd... ) en bloques (kB):

df | grep '^/dev/[hs]d' | awk '{s+=$2} END {print s}'

o en GB:

df | grep '^/dev/[hs]d' | awk '{s+=$2} END {print s/1048576}'

0 votos

Hermoso... df | grep '^/dev/' | awk '{s+=$2} END {print s/1048576}' ahora lo utilizamos en SlickStack. ¿Alguna derivación para encontrar el espacio restante (libre)?

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: