Answers:
如果您想要大小(以字节为单位),并且只需要例如脚本的值:
lsblk -b --output SIZE -n -d /dev/sdX
12220202
-b:以字节为单位输出。
-n:无标题。我们只想要纯数字值。
--output SIZE:仅打印大小列。
-d / dev / sdXn:我们想知道的设备大小。对于磁盘d的第一分区,X例如是d,n是例如1。
优点:
例如,如果要在脚本中使用该信息,请使用
sudo blockdev --getsz /dev/sda
可能比fdisk或hdparm容易,因为它只提供相关信息(只需乘以512)。但是,这也将需要sudo。
当然,您可以更改sudo的配置,使其无需输入密码即可执行此特定命令(blockdev --getsz
即使由普通的非特权用户执行,我想也是相当安全的)。
这可以通过将以下行添加到来完成/etc/sudoers
:
ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*
编辑此文件时,请确保使用命令sudo visudo
而不是通常的编辑器。否则,很容易产生语法错误,这将导致不再能够使用sudo(您必须重新启动进入救援模式才能解决此问题)。
我现在不在我的Linux机器上,但是您可以尝试:
hdparm -I /dev/sda
要么
fdisk -l
这可能也需要一个sudo。
我没有看到df需要root的任何地方。真奇怪
您要么安装错误,要么系统管理员的说法很荒谬。我以前从未听说过df
需要root特权。而且我已经使用了很多类似unix / unix的操作系统。
无论如何,这将以块(kB)的形式为您提供所有磁盘分区的总大小(第一df
列是/dev/hd...
或/dev/sd...
):
df | grep '^/dev/[hs]d' | awk '{s+=$2} END {print s}'
或以GB为单位:
df | grep '^/dev/[hs]d' | awk '{s+=$2} END {print s/1048576}'
df
如果磁盘具有未分区的空间,并非所有分区都已挂载(例如,同一驱动器上的某些Windows分区),或者不是直接而是通过RAID,LVM或LUKS(加密)间接挂载了某些分区,则使用不精确。它还将丢失交换分区。因此,我建议不以使用df
为找出硬盘容量。