【问题标题】:Get free space of HDD in linux在linux中获取硬盘的可用空间
【发布时间】:2016-08-04 10:55:18
【问题描述】:

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

我知道我可以使用以下命令获得总磁盘大小而无需成为 root:

cat /sys/block/sda/size

此命令将输出设备 SDA 上的块数。 将其乘以 512,您将获得此设备上的字节数。 这对于总磁盘大小来说已经足够了。

现在是当前使用的空间。我想在不成为 root 的情况下获得这个值。 我可以假设设备名称是 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 的已用空间?

【问题讨论】:

  • fdisk -l 使用 sudo?
  • 就像我的问题说我知道 sudo 的方式。然而,这个程序不会以 sudo 权限运行。至少我尽量不这样做。我真的需要一个没有 sudo 的解决方案
  • lsblk | tr -s ' ' |剪切 -d ' ' -f1,4 |column -t
  • @Joda lsblk 显示每个分区的总空间量。我知道如何得到这些。但我问的是每个分区的可用空间总量,而它们是否已安装无关紧要。

标签: linux bash partitioning


【解决方案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

【讨论】:

    【解决方案2】:

    您可以使用df

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

    如果你将它与一些sedawk 结合起来,你可以获得你所寻求的价值

    【讨论】:

    • 就像我之前说过的那样,df 不会给我我需要的东西。因为它为您提供了一个目录。我不知道我有什么分区。所以这不会奏效。除了 df 仅跟踪当前安装的设备。这不是完整的磁盘空间。
    猜你喜欢
    • 2020-11-08
    • 2013-12-13
    • 2013-01-26
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2010-11-26
    • 2021-08-16
    • 1970-01-01
    相关资源
    最近更新 更多