Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 获取磁盘空间并将其与最常使用的空间分开,但放在一个列表中_Perl_Bash_Awk_Grep_Sh - Fatal编程技术网

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

Perl 获取磁盘空间并将其与最常使用的空间分开,但放在一个列表中,perl,bash,awk,grep,sh,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 这个怎么样 awk '{if($5>20) a="[

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

如何获取已使用空间的示例:

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
这个怎么样

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%):

这个怎么样

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 | 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}'

只有使用率最高的磁盘具有
[错误]

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}'

通过跳过
awk
中的第一行,将
NR>1
作为块的条件,可以删除
grep
。只需将
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

通过跳过
awk
中的第一行,将
NR>1
作为块的条件,可以删除
grep
。只需将
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

这是输入的一部分,还是要计算它?注意:
-E
grep
用于扩展正则表达式。您没有使用ERE中的任何功能,实际上您正在搜索一个固定字符串,因此您需要
-F
。但是,如我的回答所示,这里不需要
grep
。这是您输入的一部分,还是您想计算它?注意:带有
grep
-E
用于扩展正则表达式。您没有使用ERE中的任何功能,实际上您正在搜索一个固定字符串,因此您需要
-F
。但是,您不需要像我的回答中所示的那样在这里使用
grep