IXPUB技术社区's Archiver

ccsadmin 发表于 2010-3-8 11:02

suse环境[bsh]实现一个小功能问题求助

[code]#author:user
#date:2010-3-7 15:30
#!/bin/sh
destdir='/home/gmonitor/'
logfilename1="monitorcpu"`date +"%Y%m%d"`".log"
logfilename2="cpuoverload"`date +"%Y%m%d"`".log"
if [ ! -f ${logfilename1} ];
then
         touch $destdir${logfilename1}
fi
if [ ! -f ${logfilename2} ];
then
touch $destdir${logfilename2}
fi
vmstat 1 >> $destdir${logfilename1}
cpu=`tail -f $destdir${logfilename1}|awk '{print $15}`
do
if [$cpu -lt 80]

  then echo `date +"%Y%m%d%H%M%S"` $cpu >> $destdir${logfilename2}
  else
continue
fi
done[/code]目的:筛选IDLE值小于80的时间和IDLE值写入logfilename2中
结果是logfilename2里为空,请教这是怎么回事?

另外我本来是直接vmstat 1 | awk '{print $15}` >> 1.txt  这样的语法为何写不进去。这个困扰我好久了

ccsadmin 发表于 2010-3-8 14:14

不好意思,逻辑有问题,我在修改下

ccsadmin 发表于 2010-3-8 17:37

#author:
#date:2010-3-7 15:30
#!/bin/sh
destdir='/home/gkmonitor/'
logfilename1="monitorcpu"`date +"%Y%m%d"`".log"
logfilename2="cpuoverload"`date +"%Y%m%d"`".log"
cpu=0
if [ ! -f ${logfilename1} ];
then
         touch $destdir${logfilename1}
fi
if [ ! -f ${logfilename2} ];
then
touch $destdir${logfilename2}
fi
#vmstat 1 10 >> $destdir${logfilename1}
#cpu=`tail -f $destdir${logfilename1}|awk '{print $15}`
while [ $cpu -lt 99 ]
  do
  vmstat 1 10 >> $destdir${logfilename1}
  cpu=`tail -f $destdir${logfilename1}|awk '{print $15}`
  echo `date +"%Y%m%d%H%M%S"` $cpu >> $destdir${logfilename2}
done

修改完了,但是还是不写logfilename2,是逻辑出了问题么?请斑竹和各路高手指点下,谢谢

页: [1]
IT嘎嘎有奖问题,可兑换实物礼品

Powered by IXPUB技术社区