我希望能够仅显示特定分区的磁盘使用情况(以 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 系统。