【问题标题】:Get disk space and separate this with most used space but put in one list获取磁盘空间并将其与最常用的空间分开,但放在一个列表中
【发布时间】:2013-05-18 16:49:11
【问题描述】:

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

获取已用空间的示例:

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

【问题讨论】:

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

标签: perl bash awk grep sh


【解决方案1】:

您可以通过跳过awk 中的第一行来删除grep,并将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

【讨论】:

    【解决方案2】:

    这个怎么样?

    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
    

    【讨论】:

      【解决方案3】:

      只有使用率最高的磁盘有[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
      

      【讨论】:

        猜你喜欢
        • 2012-11-15
        • 1970-01-01
        • 2019-12-12
        • 2020-07-12
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多