当文件系统很长时,如何使用“df -h”获取磁盘空间(可用)

当文件系统很长时,如何使用“df -h”获取磁盘空间(可用)

我正在尝试通过控制台查找可用磁盘空间

我发现df -h | awk '$NF == "/" { print $4 }'得到了所需的输出。

[root@tmpe2etstmsdc01 ~]# df -h
Filesystem                                                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root                                542G   22G  492G   5% /
tmpfs                                                      127G     0  127G   0% /dev/shm

有用

[root@tmpe2etstmsdc01 ~]# df -h | awk '$NF == "/" { print $4 }'
492G

当很长时这会给出Use%价值Filesystem

[root@ldrnr-tlsmsdc16 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root
                   16G   16G     0 100% /
tmpfs             1.9G     0  1.9G   0% /dev/shm

在这里,命令给出Use%而不是Avail

[root@ldrnr-tlsmsdc16 ~]# df -h | awk '$NF == "/" { print $4 }'
100%

我怎样才能进入Avail这种状态?

答案1

尝试:

stat -fc %a /mountpoint

%a是非超级用户可用的块。用于%f总空闲块。另请注意,这%s是块大小,因此如果您想要总可用字节数,您可以这样说:

stat -fc '%f * %s' /mountpoint | bc

请参阅stat(1) 手册页了解更多选项。一般来说,stat(1)比可解析的输出更容易使用df

答案2

通过 GNU coreutils,您可以使用以下命令:

df -h --output=avail / | sed '1d'

仅打印Avail安装在 上的文件系统的行/。不幸的是,df没有选项可以禁用标题行,因此sed删除了第一行。

答案3

您也可以尝试使用 awk:

df -h|tail -n +2 | awk '{if ($5 == "/")print $3; }'

或者:

df -h|tail -n +2 | awk '{if ($6 == "/") print $4; }'

取决于你的 df 输出

答案4

df -h | awk '$NF == "/" { if($1 ~ /^[0-9]/) print $3; else print $4 }'

或者

df -h | awk '$NF == "/" { if($5 == "/") print $3; else print $4 }'

相关内容