用于监视文件系统的脚本aix

时间:2013-11-05 08:01:29

标签: shell unix awk filesystems

我正在尝试创建一个脚本,该脚本将显示超过69%的文件系统,并且如果所有文件系统都低于69%,则排除文件系统名称bkp或归档,然后脚本应该只打印单个“ok”消息< / p>

使用下面的脚本我能够实现我的要求的第一部分,但我需要单个'ok'脚本输出显示多次ok(与机器上存在的文件系统没有相同)可以有人帮助我获得如果每个文件系统都低于阈值,那么只需单个确定吗?

echo `df -k |awk '{print $7, $4}'|cut -d '%' -f1| awk '{if ($2>69)print $1, $2 ;else print "ok"}'|grep -vE "bkp|archival"`

正常输出(我不想在这里看到'ok'但只有文件系统名称超过阈值)

\ok ok ok /var 74 /tmp 79 ok ok /opt 74 ok /db2/tdb_instlocal 83 ok /LOGS 78 ok ok /db2/t1reorg 75 ok ok ok /bkg_26AS 79 ok ok ok /templogship 73 ok /dumptest 79 ok ok /db/n1db10 82 /db/n1db11 82 /db/n1db12 81 /db/n1db13 83 /db/n1db14 82 /db/n1db15 82 /db/n1db16 87 /db/n1db17 81 /db/n1db18 81 /db/n1db9 83 /db2/t1log 77 ok ok ok ok ok /db2/tdb_inst_l3 87 ok ok ok ok /db2/tdb_inst3 87 ok ok ok ok ok ok ok ok ok ok

如果一切都低于阈值(低于69%)那么它应该只显示单个'ok'

希望有些人能帮助我解决问题。

1 个答案:

答案 0 :(得分:2)

(似乎我的df -k的输出与你的不同。我的使用金额为5美元,而你的金额为4美元。此外,文件系统的名称是1美元,而你使用7美元)在我的机器上,以下似乎工作

df -k | awk -f print.awk

其中print.awk

NR> 1{
    sub(/%/,"",$5)
    if ($5 > 69) {
       if (!match($1,/bkp|archival/)) {
         print $5, $1; f=1
       }
    }
}

END { if (!f) print "ok" } 

或作为一个班轮:

df -k | awk 'NR> 1{ sub(/%/,"",$5);  if ($5 > 69) { if (!match($1,/bkp|archival/)) { print $5, $1; f=1; } } } END { if (!f) print "ok" }'