0

我正在尝试创建一个脚本,该脚本将显示使用率超过 69% 的文件系统,并排除名称为 bkp 或存档的文件系统,如果所有文件系统都低于 69%,那么脚本应该只打印单个“ok”消息

使用下面的脚本我能够实现我的要求的第一部分,但是我只需要一个“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 /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”

希望有人能帮助我修复我的 scipt。

4

1 回答 1

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" }' 
于 2013-11-05T09:10:25.383 回答