检查文件系统的使用情况(文件系统可用空间大小),输出使用空间大于90%的行,使用awk处理,各系统测试如下。
目前有2个思路:
1:匹配字符串(匹配字符、数字,下述本意一样,但是不同操作系统上测试支持的语法有少许区别)
df -k|awk '$5!~/[1-8].%/ && $5!~/^[0-9]%/ {print}' (solaris):
bdf|awk 'NF==1 {printf $1;next}{print}'|awk '$5!~/[1-8].%/ && $5!~/^[0-9]%/ {print}' (HP-UX):
bdf|awk 'NF==1 {printf $1;next}{print}'|awk '$5!~/(^[1-8][0-9]%|^[0-9]%)/ {print}' (HP-UX)
df -g|awk '$4!~/(-|[1-8].%|^[0-9]%)/ {print}' (AIX)
awk '$4!~/[1-8].%/ && $4!~/(^[0-9]%|-)/ {print}' (AIX)
2: 计算对应列值大于89的,再输出:
df -g|sed '2,$s/%//g'|awk 'BEGIN{OFS="\t"}; NR==1 {print $0}; NR>1&&($4>89 ||$6>89) {print $1,$2,$3,$4"%",$5,$6"%",$7}' (AIX 考虑了inode得使用百分比)
df -k|sed '2,$s/%//g'|awk 'BEGIN{OFS="\t"} NR==1 {print $0} NR>1&&$5>89 {print $1,$2,$3,$4,$5"%",$6}' (solaris )
df -k|sed '2,$s/%//g'|awk 'BEGIN {OFS="\t"}NR==1 {print $0} NR>1&&$5>89 {printf"%15s %10s %10s %10s %4s %-10s\n", $1,$2,$3,$4,$5,$6}' (solaris 格式化输出,稍微处理了下,需继续处理)
HP-UX的对应列和awk的语句同solaris只是将df -k换成bdf(同时bdf的结果在长字段时会自动换行,造成本来应该是一行的内容变为2行,需要处理一下 awk 'NF==1 {printf $1;next}{print}')
先测试这么多,后期有时间再考虑简化一下。
阅读(1648) | 评论(0) | 转发(0) |