获取磁盘空间并将其与最常用的空间分开,但放在一个列表中

时间:2013-05-23 10:51:32

标签: perl bash awk grep sh

想要获得磁盘空间并将其与最常用的空间分开但放在一个列表中

示例如何获取已用空间:

df -P | grep -vE 'Filesystem' | awk '{ print $5 " " $6 }'

输出:

89% /
1% /oralog
24% /oradata
0% /dev/shm

预期观点:

[bad] 89% /
[ok] 1% /oralog
[ok]24% /oradata
[ok]0% /dev/shm

3 个答案:

答案 0 :(得分:5)

您可以跳过grep,跳过awk的第一行,NR>1作为阻止条件。只需将x的值设置为好/坏的限制,在示例中我将限制设置为80:

$ df -P | awk 'NR>1{print ($5>x)?"[bad]":"[okay]",$5,$6}' OFS='\t' x=80
[bad]   89%    /
[ok]    1%     /oralog
[ok]    24%    /oradata
[ok]    0%     /dev/shm

答案 1 :(得分:1)

这个怎么样?

awk '{if($5>20) a="[bad]"; else a="[good]";} {print a, $5 " " $6}'

所有在一起:

$ df -P | grep -vE 'Filesystem' | awk '{if($5>20) a="[bad]"; else a="[good]";} {print a, $5 " " $6}'

测试(阈值为20%):

$ df -P | grep -vE 'Filesystem' | awk '{if($5>20) a="[bad]"; else a="[good]";} {print a, $5 " " $6}'
[bad] 25% /
[good] 1% /dev
[good] 1% /run
[good] 0% /run/lock
[good] 1% /run/shm
[good] 1% /run/user

答案 2 :(得分:1)

只有使用率最高的磁盘有[bad]

df -P | perl -anE '$F[4]=~s/%//||next;push@r,[@F];$m<$F[4] and $m=$F[4];END{say $m==$$_[4]?"[bad]":"[ok]"," $$_[4]% $$_[5]"for@r}'

输出

[ok] 44% /
[ok] 0% /lib/init/rw
[ok] 1% /dev
[ok] 0% /dev/shm
[bad] 61% /ftp