在linux中获得HDD的可用空间

时间:2016-04-13 11:21:19

标签: linux bash partitioning

在bash脚本中,我需要获取整个磁盘的总磁盘大小和当前使用的大小。

我知道我可以使用此命令获取总磁盘大小而无需root:

cat /sys/block/sda/size

此命令将输出设备SDA上的块数。 将它与512相乘,您将获得此设备上的字节数。 这足以满足总磁盘大小。

现在用于当前使用的空间。我希望得到这个价值而不是根。 我可以假设设备名称是SDA。 现在有这个命令:df 我以为我可以使用此命令,但似乎此命令仅输出当前安装的分区的数据。

有没有办法在磁盘SDA上使用总空间而不需要root,而不是所有分区都需要挂载?

让我们假设以下示例:

/dev/sda1 80GB Linux partition 20GB Used
/dev/sda2 80GB Linux Home partition 20GB Used
/dev/sda3 100GB Windows Parition. 30GB Used

我们假设我的SDA磁盘像上面一样进行了分区。但是当我在Linux上时,我的Windows分区(sda3)没有安装。

df的输出总共会给我40 GB的使用权,所以它不会占用sda3。

同样问题: 有没有办法没有root 来获得总共70 GB的已用空间?

2 个答案:

答案 0 :(得分:1)

我认为stat命令应该有所帮助。您可以从/proc/partitions获取分区。

示例stat命令输出:

$ stat -f /dev/sda1
  File: "/dev/sda1"
    ID: 0        Namelen: 255     Type: tmpfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 237009     Free: 236970     Available: 236970
Inodes: Total: 237009     Free: 236386

答案 1 :(得分:-1)

您可以使用df

df -h --output='used' /home 
Used
3.2G

如果您将其与某些sedawk结合使用,则可以获得您所寻求的价值