脚本1:
#/bin/sh
i=1for((i=1;i<=1000000;i++));do
date >> cpu.txt
top -d 1 -n 1|grep Cpu >> cpu.txt (实际测试结果:会有乱码)
date>>iostat.txt
iostat -d -m >> iostat.txt (实际测试结果:不如iostat -d -k -t 2准确)
sleep 10
done;
top:命令本身会刷新,如果不加-n 会阻塞,-n为打印几次,-d是时间间隔。
iostat :-m指定单位为MB/s
补充:
iostat -d -k -t 2 每个两秒会数据I/O信息,单位KB/s。
也可把for语句换成while语句。
执行脚本时,用screen命令,可以多视窗进行,不必担心关掉窗口就会停止运行。具体可以参考screen详解。
#----定义变量-----
#可以变成参数
collectDelayTime=5 # sar采集时间间隔,单位秒
collectTime=60 # sar采集总时间,默认为一天,单位秒
#-----Main----
dDate=`date +%Y%m%d`
dTime=`date +%H:%m`
collectTimes=`expr ${collectTime} / ${collectDelayTime}`
nohup sar ${collectDelayTime} ${collectTimes} >> ${dDate}_cpu.log & sar ${collectDelayTime} ${collectTimes} -r >> ${dDate}_mem.log
nohup iostat -t ${collectDelayTime} -k >> ${dDate}_iostat.log