我正在尝试通过控制台查找可用磁盘空间
我发现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 }'