磁盘使用情况仅显示选定的分区?

磁盘使用情况仅显示选定的分区?

我希望能够仅显示特定分区的磁盘使用情况(以 GB 为单位)并在其后显示 %。基本上忽略 swap、tmpfs 等。

我还想计算磁盘使用量的总和并从总数中减去以获得可用空间。

现在我有类似的东西,但不确定如何使用 awk 并选择我想要计算的分区。

df -h | awk '$5 ~ /\%$/ print $1 " " $5}'

这是用于 Debian 系统。

编辑:

所以我弄清楚了我可以使用 / 来限制结果,但是,这只能显示有多少是免费的。

df -h / | awk '{ a = $4 } END { print a }'

答案1

我不确定你想用 做什么awk,但你不必要地使表达式复杂化。输出文件系统、可用空间和百分比占用率所需的内容如下:

df -h /|awk '{ print $1, $4, $5 }'

但是,这不会将标题与数据对齐。要保持对齐,请使用以下命令:

df -h /|awk '{ printf "%-60s %6s %6s\n", $1, $4, $5 }'

这里我使用了较宽的第一个字段,因为我的系统磁盘是按 UUID 列出的。要显示可用空间百分比而不是占用空间,您可以使用:

df -h /|awk '{ printf $5=="Use%"?"%-60s %6s   Free%%\n":"%-60s %6s %6s%%\n", $1, $4, 100-$5 }'

在这种情况下,%算术表达式中的符号被忽略。我不知道df是否像我假设的那样将百分比四舍五入为最接近的整数。如果它向下舍入,则会100-$5向上舍入,因此改为使用99-$5以获得向下舍入的可用空间。

答案2

问题并没有确切地表明期望的输出是什么,但这似乎与你想要的相符:

df -h | grep -E --color=never 'Filesystem|/dev/'

包含该字符串Filesystem是为了使输出显示人性化的列标题。/dev/包含该字符串是因为它消除了 udev 和 tmpfs 系统。

相关内容