在linux中获得HDD的可用空间

Bak*_*ap4 5 linux bash partitioning

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

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

cat /sys/block/sda/size
Run Code Online (Sandbox Code Playgroud)

此命令将输出设备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
Run Code Online (Sandbox Code Playgroud)

我们假设我的SDA磁盘是如上所述进行分区的.但是当我在Linux上时,我的Windows分区(sda3)没有安装.

df的输出将使我总共使用40 GB,因此它不会占用sda3.

问题又来了:有什么办法没有根,让我一个总计70 GB的使用空间?

Faz*_*lin 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
Run Code Online (Sandbox Code Playgroud)