#!/bin/bash
##监控磁盘IO使用率,并找出哪个进程造成磁盘使用率很高
##该脚本需要写一个常驻循环
##作者:阿铭
##日期:2018-11-06
#判断机器上是否安装iostat命令
if ! which iostat &>/dev/null
then
yum install -y sysstat
#如果你的机器为ubuntu,请使用这个命令:apt-get install -y sysstat
fi
#判断机器上是否安装iotop命令
if ! which iotop &>/dev/null
then
yum install -y iotop
#如果你的机器为ubuntu,请使用这个命令:apt-get install -y iotop
fi
#定义记录日志的目录
logdir=/tmp/iolog
[ -d $logdir ] || mkdir $logdir
#定义日志名字
dt=`date +%F`
#定义获取io的函数(取5次平均值)
get_io()
{
iostat -dx 1 5 > $logdir/iostat.log
sum=0
#取最后一列的%util值循环遍历然后相加
for ut in `grep "^$1" $logdir/iostat.log|awk '{print $NF}'|cut -d. -f1`
do
sum=$[$sum+$ut]
done
echo $[$sum/5]
}
#这里的true表示条件为真
while true
do
#获取所有设备,对所有设备名遍历
for d in `iostat -dx|egrep -v '^$|Device:|CPU\)'|awk '{print $1}'`
do
io=`get_io $d`
#如果io使用率大于等于80
if [ $io -ge 80 ]
then
#向日志里记录时间、iostat和iotop信息
date >> $logdir/$dt
cat $logdir/iostat.log >>$logdir/$dt
iotop -obn2 >>$logdir/$dt
echo "####################" >>$logdir/$dt
fi
#休眠10秒,继续以上步骤
done
sleep 10
done