LoveUnix » AIX -IBM UNIX » 怎样写这个简单的指令(续)
让LU留住您的每

一天 让LU博客留住您的每一天
2008-7-18 10:41 AURORABOREALIS
怎样写这个简单的指令(续)

前几天问了个问题,就是“df,只输出%used超过90%的文件系统,请问这个指令该怎么写”,有很多高人回贴啊,于是决定潜心研究一下awk,也好看懂大家在写什么;P ,研究了两天的结果是发现--这条命令不用awk就能写了:df | egrep '9[0-9]% | 100%',这说明只要肯动点脑筋问题都能解决,同时感谢流沙兄等人的回帖

2008-7-18 10:52 beginner-bj
你这个不通用啊。我要超过55%的,你怎么写?

而且如果%Iused大于90%,但%Used没大于呢?

2008-7-18 10:56 AURORABOREALIS
如果超过55%可以写df|egrep '5[5-9]% | [6-9][0-9]% | 100%'

2008-7-18 11:07 AURORABOREALIS
只要看%Used的话,可以写:df | egrep '9[0-9]%.....[0-9] | 100%.....[0-9]':victory: ,因为%used后跟的是数字,而%Iused后跟的是mount on:victory:

2008-7-18 11:09 tyrone.dev
万一有人把目录名取成 90%呢

2008-7-18 11:25 beginner-bj
[quote]原帖由 [i]AURORABOREALIS[/i] 于 2008-7-18 11:07 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=810254&ptid=87279][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
只要看%Used的话,可以写:df | egrep '9[0-9]%.....[0-9] | 100%.....[0-9]':victory: ,因为%used后跟的是数字,而%Iused后跟的是mount on:victory: [/quote]

你厉害,在下佩服得五体投地

2008-7-18 11:40 arfa
佩服,一般都习惯于用AWK

2008-7-18 11:41 AURORABOREALIS
呵呵,看来还是要用awk啦,要不然大家都觉得不严谨

2008-7-18 13:28 指尖流沙
我习惯是哪个命令好记就用哪个~~~搞不定的东西再去找新东西:lol :lol

2008-7-18 13:31 lzolder
这样的脚本很多可以参考,也很容易实现

我自己写了个,用法是:shell arg (arg:1-100的数字)

结果:输出你的系统中,FS占用率>你定义数字的文件系统名

比如:shell 80,会输入系统中文件系统占用率>80%的文件系统名
[code]#!/usr/bin/ksh
#set -x
HOSTS=`hostname`
SCRIPT=`basename $0`
FILE1="/tmp/df.tmp"
>$FILE1
FILE2="/tmp/df.out"
>$FILE2
if (( $# != 1 ));
then
        echo "\nUsage:  $SCRIPT [1-100]"
        exit 0
fi
df -k |tail -n +2 |grep -v /proc |awk '{print $1,$4,$7}' >$FILE1
while read FSDEVICE FSVALUE FSMOUNT
do
        FSVALUE=$(echo $FSVALUE | sed s/\%//g)
        if (( $FSVALUE >= $1 ))
        then
        echo "$FSDEVICE mounted on $FSMOUNT is $FSVALUE%" >>$FILE2
        fi
done < $FILE1
if [ -s $FILE2 ]
then
        echo "\nFilesystems on $HOSTS greater than $1%\n"
        cat $FILE2
        print
else    echo "\nNo Filesystems greater than $1%"
fi[/code]

2008-7-18 13:53 AURORABOREALIS
LS厉害,研究研究

2008-7-18 14:14 tyrone.dev
这个问题最主要是取得文件系统的使用信息并且过滤而已!
首先取得数据是df 来取得。一般也没什么变化。
但过滤的方法有很多种,任何编语言都可以做到。比如用perl , awk , ruby ,C都可以。只不过awk是最方便做这件事情。
如 df -m | awk 'int($4)>=80' 或者 df -m | awk 'gsub( "%" , "" , $4 ) >= 80'  而#10的方法并不是很好,他使用了awk但仅仅是为了分开字符串的作用。而放弃了awk本身更强大的功能。反而把原来很简单的问题复杂化了。

2008-7-18 18:57 alii2000
LS厉害,awk很强大!

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.